JMX问题

blueshame 2010-01-12 07:37:23
public class AgentCtrlJMX {
private Logger logger = LogManager.getLogger(AgentCtrlJMX.class);
private JMXConnectorServer jmxServer;
private String hostIp;
private int port;
private List<RequestObject> requestObjectList;

public AgentCtrlJMX(){
this.jmxServer = null;
this.hostIp = "127.0.0.1";
this.port = 3071;
this.requestObjectList = null;
}
/**
* @return the port
*/
public int getPort() {
return port;
}

/**
* @param port the port to set
*/
public void setPort(int port) {
this.port = port;
}

/**
* @return the requestObjectList
*/
public List<RequestObject> getRequestObjectList() {
return requestObjectList;
}

/**
* @param requestObjectList the requestObjectList to set
*/
public void setRequestObjectList(List<RequestObject> requestObjectList) {
this.requestObjectList = requestObjectList;
}

public boolean start(){
// TODO Auto-generated method stub
logger.info("控制代理启动命令接收服务,端口为"+port);
MBeanServer server = ManagementFactory.getPlatformMBeanServer();
try {
logger.info("控制代理命令接收服务加载命令处理模");
ObjectName engineCmdRequestMbeanName = new ObjectName("dfeng:name=EngineCmdRequest");
server.registerMBean(new EgineCmdRequest(requestObjectList), engineCmdRequestMbeanName);

logger.info("控制代理命令接收服务加载信息采集理模");
ObjectName collectInfoMbeanName = new ObjectName("dfeng:name=AgentCtrlCollectInfo");
server.registerMBean(new AgentCtrlCollectInfo(), collectInfoMbeanName);

// 存取该JMX服务的URL:
JMXServiceURL url = new JMXServiceURL("rmi", this.hostIp, port, "/jndi/rmi://" + this.hostIp +":" + port + "/AgentCtrlJMXServer");
logger.info("控制代理命令接收服务URL="+url);

// start()和stop()来启动和停止 JMXConnectorServer
jmxServer = JMXConnectorServerFactory.newJMXConnectorServer(url, null, server);

// 在RMI上注册
LocateRegistry.createRegistry(port);
jmxServer.start();
logger.info("控制代理命令接收服务启动成功");
return true;
} catch (MalformedObjectNameException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstanceAlreadyExistsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MBeanRegistrationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotCompliantMBeanException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

logger.info("控制代理命令接收服务启动失败");
return false;
}

public boolean stop(){
logger.info("控制代理命令接收服务关闭");
if(jmxServer==null){
return true;
}

if(!jmxServer.isActive()){
return true;
}

try {
jmxServer.stop();
logger.info("关闭控制代理命令接收服务成功");
return true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

logger.info("控制代理命令接收服务关闭失败");
return false;
}
}
我用SPRING把这个类管理起来,在tomcat里头停掉WEB应用的时候,调用stop成功,为什么JMX没有被停掉,还仍然执行
...全文
117 回复 打赏 收藏 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

6,786

社区成员

发帖
与我相关
我的任务
社区描述
JBoss技术交流
社区管理员
  • JBoss技术交流社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧