/**
* 2012-8-3 上午10:25:29
* @author zhangjun
*/
package org.fdzz.service;
import java.lang.reflect.Proxy;
import java.sql.Connection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.fdzz.db.DBManager;
import org.fdzz.proxy.ServiceProxy;
import org.fdzz.server.BusinessClient;
import org.fdzz.service.impl.BalanceServiceImpl;
import org.fdzz.service.impl.ChargeServiceImpl;
import org.fdzz.service.impl.LoginServiceImpl;
import org.fdzz.service.impl.MessageServiceImpl;
import org.fdzz.service.impl.SPServiceImpl;
import org.fdzz.service.impl.WeatherServiceImpl;
import org.fdzz.util.PropertyUtil;
import org.fdzz.util.ProtocolAnalysis;
/**
* @author zhangjun
* 2012-8-3 上午10:25:29
* 业务转发功能模块,主要获得各种业务功能接口
*/
public class ServiceManager {
private static ServiceManager serviceManager = null;
private Map<String, BaseService> services = new HashMap<String, BaseService>();//存放各种业务接口
private ProtocolAnalysis protocolAnalysis = ProtocolAnalysis.getInstance();//协议工具类
private DBManager dbManager = DBManager.getInstance();//数据库管理类
private String path = "src/proxy.properties";//代理方法事务配置文件
private PropertyUtil propertyUtil = PropertyUtil.getInstance();//读取配置文件工具类
private Set<String> methodNames = new HashSet<String>();
private Log logger = LogFactory.getLog(ServiceManager.class);
//这里的常量主要是获取代理方法的配置
public static String LOGIN_SERVICE = "LoginService";//登陆业务
public static String MESSAGE_SERVICE = "MessageService";//短信业务
public static String SP_SERVICE = "SPService";//SP服务业务
public static String CHARGE_SERVICE = "ChargeService";//话费业务
public static String WEATHER_SERVICE = "WeatherService";//天气业务
public static String Balance_SERVICE = "BalanceService";//话费查询
private ServiceManager() {
}
/**
* 打开一个连接
* @return
*/
public Connection openConnection() {
return dbManager.getConnection();
}
/**
* 获取业务接口
* @param serviceName
* @return
*/
public BaseService getService(String serviceName) {
Connection connection = dbManager.getConnection();
BaseService service = services.get(serviceName);
service.setConnection(connection);
return service;
}
/**
* 获取业务功能模块接口
* @return
*/
public static ServiceManager getInstance() {
if (serviceManager == null) {
serviceManager = new ServiceManager();
serviceManager.initialServices();
}
return serviceManager;
}
/**
* 初始化业务管理类,主要是实例化各业务类的代理对象和读取需要添加事务的方法名
*/
@SuppressWarnings("unchecked")
public void initialServices() {
Properties prop = propertyUtil.getProperty(path);
String loginMethod = prop.getProperty(LOGIN_SERVICE);
if (loginMethod != null) {
String[] methods = loginMethod.split(",");
for (int i = 0; i < methods.length; i++) {
methodNames.add(methods[i].trim());
}
}
String spMethod = prop.getProperty(SP_SERVICE);
if (spMethod != null) {
String[] methods = spMethod.split(",");
for (int i = 0; i < methods.length; i++) {
methodNames.add(methods[i].trim());
}
}
String messageMethod = prop.getProperty(MESSAGE_SERVICE);
if (messageMethod != null) {
String[] methods = messageMethod.split(",");
for (int i = 0; i < methods.length; i++) {
methodNames.add(methods[i].trim());
}
}
String weatherMethod = prop.getProperty(WEATHER_SERVICE);
if (weatherMethod != null) {
String[] methods = weatherMethod.split(",");
for (int i = 0; i < methods.length; i++) {
methodNames.add(methods[i].trim());
}
}
String balanceMethod = prop.getProperty(Balance_SERVICE);
if (balanceMethod != null) {
String[] methods = balanceMethod.split(",");
for (int i = 0; i < methods.length; i++) {
methodNames.add(methods[i].trim());
}
}
String chargeMethod = prop.getProperty(CHARGE_SERVICE);
if (chargeMethod != null) {
String[] methods = chargeMethod.split(",");
for (int i = 0; i < methods.length; i++) {
methodNames.add(methods[i].trim());
}
}
LoginServiceImpl ls = new LoginServiceImpl();
Class clazz = ls.getClass();
BaseService loginProxy = (BaseService) Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(), new ServiceProxy(ls));
serviceManager.services.put(LOGIN_SERVICE, loginProxy);
SPServiceImpl si = new SPServiceImpl();
clazz = si.getClass();
BaseService spProxy = (BaseService) Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(), new ServiceProxy(si));
serviceManager.services.put(SP_SERVICE, spProxy);
MessageServiceImpl ms = new MessageServiceImpl();
clazz = ms.getClass();
BaseService messageProxy = (BaseService) Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(), new ServiceProxy(ms));
serviceManager.services.put(MESSAGE_SERVICE, messageProxy);
WeatherServiceImpl ws = new WeatherServiceImpl();
clazz = ws.getClass();
BaseService weatherProxy = (BaseService) Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(), new ServiceProxy(ws));
serviceManager.services.put(ProtocolAnalysis.MAP_DESTINATE_WEATHER, weatherProxy);
BalanceServiceImpl bs = new BalanceServiceImpl();
clazz = bs.getClass();
BaseService balanceProxy = (BaseService) Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(), new ServiceProxy(bs));
serviceManager.services.put(ProtocolAnalysis.MAP_DESTINATE_LEFTMONEY, balanceProxy);
ChargeServiceImpl cs = new ChargeServiceImpl();
clazz = cs.getClass();
BaseService chargeProxy = (BaseService) Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(), new ServiceProxy(cs));
serviceManager.services.put(ProtocolAnalysis.MAP_DESTINATE_CHARGE, chargeProxy);
}
/**
* 获取代理方法名称
* @return
*/
public Set<String> getMethodNames() {
return methodNames;
}
/**
* 实现业务转发
* @param request
* @
*/
public void doBusiness(BusinessClient bizClient, Map<String, String> request) {
if (logger.isInfoEnabled()) {
logger.info("用户" + bizClient.getUsername() + "进行业务选择....");
}
String cmd = request.get(ProtocolAnalysis.MAP_PDU);
Map<String, String> response = null;
if (cmd.equals(ProtocolAnalysis.CMD_LOGOUT)) {//登出请求
if (logger.isInfoEnabled()) {
logger.info("用户" + bizClient.getUsername() + "启动登出业务....");
}
LoginService loginService = (LoginService) serviceManager.getService(ServiceManager.LOGIN_SERVICE);
String username = request.get(ProtocolAnalysis.MAP_USERNAME);
response = loginService.logout(username);
String message = protocolAnalysis.makeResponseMessage(response);
bizClient.sendMessage(message);
bizClient.clients.remove(username);
bizClient.beConnected = false;
} else if (cmd.equals(ProtocolAnalysis.CMD_LOGIN)) {//登入请求
if (logger.isInfoEnabled()) {
logger.info("用户" + bizClient.getUsername() + "启动登陆业务....已在登陆状态,重复登入,出错啦!");
}
//已在登陆状态,重复登入,出错啦
response = new HashMap<String, String>();
response.put(ProtocolAnalysis.MAP_STATUS, ProtocolAnalysis.STATUS_REPEATLOGIN);
String message = protocolAnalysis.makeResponseMessage(response);
bizClient.sendMessage(message);
} else if (cmd.equals(ProtocolAnalysis.CMD_MESSAGE)) {//短信请求
if (logger.isInfoEnabled()) {
logger.info("用户" + bizClient.getUsername() + "启动短信请求业务....");
logger.info("把这条短信记录下来....");
}
String destinate = request.get(ProtocolAnalysis.MAP_DESTINATE).trim();
//首先记录这条短信
MessageService messageService = (Message
没有合适的资源?快使用搜索试试~ 我知道了~
MCP.rar_增值
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
共225个文件
class:93个
java:88个
gif:28个
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 136 浏览量
2022-09-20
20:36:27
上传
评论
收藏 288KB RAR 举报
温馨提示
局域网聊天 发送短信 办理增值业务 采用java网络编程结合多线程
资源推荐
资源详情
资源评论
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/GIF.png)
共 225 条
- 1
- 2
- 3
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/5df8bff20ad645abb899a1a8333a748d_weixin_42651281.jpg!1)
小波思基
- 粉丝: 75
- 资源: 1万+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 求最大公约数(简单).cpp
- elasticsearch数据库下载、配置、使用案例
- springboot的概要介绍与分析
- C语言的概要介绍与分析
- 第一个较大的Android项目,基于Android平台的图书管理系统(Android studio).zip
- Cisco Packet Tracer 6.2 for Windows Instructor Version
- 使⽤pyIAST计算⽓体吸附选择性
- tmp_b056727e59b8123365486983f32baa9732607ec3c6137b12.pdf
- C代码实现文件的拆分和合并,本质上就是文件的读写操作.zip
- TVMP3player.apk.1
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)