一.How
1.创建配置文件的类,然后使用spring配置导出成MBean。
(1)创建配置类(基于spring管理的话其实就是POJO,不用实现MBean接口)
public class ParseHandlerMap{
private Logger logger =Logger.getLogger(this.getClass());
private Map<String, IUrlParseHandler> parseMap;
private Map<String, String> loginURLMap;
private String defaultLoginPath="http://www.test.com/Clients/login.html";
public void setParseMap(Map<String, IUrlParseHandler> parseMap) {
this.parseMap = parseMap;
}
public void setLoginURLMap(Map<String, String> loginURLMap) {
this.loginURLMap = loginURLMap;
}
public void setDefaultLoginPath(String defaultLoginPath) {
this.defaultLoginPath = defaultLoginPath;
}
public String getDefaultLoginPath() {
return defaultLoginPath;
}
public Map<String, IUrlParseHandler> getParseMap() {
return parseMap;
}
public Map<String, String> getLoginURLMap() {
return loginURLMap;
}
//动态添加游戏解析器
public String addHandler(String gameId) {
if(!ParameterUtil.isPosiIntegerNum(gameId)){
return "gameId is not number";
}
String className="com.test.Game"+gameId+"URLParseHandler";
try {
Class<?> clazz = Class.forName(className);
IUrlParseHandler handler =(IUrlParseHandler)clazz.newInstance();
parseMap.put(gameId, handler);
return "add handler OK";
} catch (ClassNotFoundException e) {
logger.error("add handler fail",e);
return "class not found";
} catch (InstantiationException e) {
logger.error("add handler fail",e);
return "instance create fail";
} catch (IllegalAccessException e) {
logger.error("add handler fail",e);
return "add handler fail";
}
}
//动态删除解析器
public String deleteHandler(String gameId) {
parseMap.remove(gameId);
return "removed";
}
public IUrlParseHandler getHandler(String gameId) {
return parseMap.get(gameId);
}
//查看当前的解析器数量
public int getHandlerNum(){
return parseMap.size();
}
//添加游戏的登陆页面地址
public String addLoginURL(String gameId, String url) {
loginURLMap.put(gameId, url);
return "OK";
}
//删除游戏的登陆页面地址
public String deleteLoginURL(String gameId) {
loginURLMap.remove(gameId);
return "removed ok";
}
//查看游戏的登陆页面地址
public String getLoginURL(String gameId) {
if(loginURLMap==null || loginURLMap.isEmpty()){
return defaultLoginPath;
}else{
String path = loginURLMap.get(gameId);
if(path==null){
return defaultLoginPath;
}else{
return path;
}
}
}
}
2.spring导出MBean配置
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter">
<property name="beans">
<map>
<!--导出MBean类-->
<entry key="bean:name=parseHandlerMap" value-ref="parseHandlerMap"/>
</map>
</property>
<property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING"/>
</bean>
<bean id="parseHandlerMap" class="com.test.ParseHandlerMap"/>
3.虚拟机设置
启动java虚拟机时,增加虚拟机对JMX的支持,以及相应的权限设置.以Tomcat为例修改启动文件catalina.sh:
(1)增加以下配置:
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote"
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=9999" //远程管理端口
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=true" //权限认证
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
(2)tomcat的lib目录增加jmxri.jar,jmxtools.jar包;
(3)创建管理权限文件
由模板文件$JAVA_HOME/jre/lib/management/jmxremote.password.template创建密码文件$JAVA_HOME/jre/lib/management/jmxremote.password;打开其中monitorRole和controlRole的角色并修改密码。monitorRole只有只读权限,controlRole可读可写。
二.使用JMX进行管理
1.客户端命令运行JConsole,打开java自带的管理工具,输入远程地址端口,以及账号密码
2.连接后选MBean标签,找到自定义的MBean的类,即可调用里面的方法更新配置,或者查看当前的配置
分享到:
相关推荐
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
Java 3DMenu 界面源码 5个目标文件 内容索引:Java源码,窗体界面,3DMenu Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...
MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...