JMX和JConsole的问题

windgoogle 2008-09-02 06:29:12
import java.rmi.registry.*;
import javax.management.*;
import javax.management.remote.*;


public class JmxServer {
public JmxServer() {
start();
}


public void start(){
try{
MBeanServer jmxServer;
if( MBeanServerFactory.findMBeanServer(null).size() > 0 ) {
jmxServer=(MBeanServer)MBeanServerFactory.findMBeanServer(null).get(0);

} else {
jmxServer=MBeanServerFactory.createMBeanServer("TongWeb");
}


jmxServer.registerMBean(new Monitor(),new ObjectName("tongtech.tw:systemMonitor=huangfeng"));
System.out.println("******jmx server started************");
}catch(Exception ex){
ex.printStackTrace();
}

}
}

public class JMXTest {
public JMXTest() {
}

public static void main(String args []){
JmxServer jmxserver=new JmxServer();
}
}

为什么用java -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote
.authenticate=false JMXTest 启动后,用jconsole用9999端口连接不上了,这段代码跟tomcat(创建MBServer)里的差不多,tomcat为什么可以连接呢,百思不得其解
...全文
227 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingkangxu 2008-09-04
  • 打赏
  • 举报
回复
jconsole 不是有三种方式输入连接地址吗?
你选最后一个Tab,通过输入URL的方式,然后输入MBeanServer的URL应该就行吧/

关于安全问题,我觉得你的-Dcom.sun.management.jmxremote
.authenticate=false 这个选项已经把认证去了,应该是没有问题的。。

在一个就是SSL关联的问题,这个我不太懂。。只是知道Client和Server之间需要设置trustStore和keyStore什么的。
windgoogle 2008-09-04
  • 打赏
  • 举报
回复
兄弟,谢谢你耐心回复,我说的就是通过第二种方式连接(第二个tab),而不是你说的第三种(最后一个tab),通过第二种
-Dcom.sun.management.jmxremote .authenticate=false,tomcat是没问题的,但是我这个程序就是有问题,所以百思不得其解
windgoogle 2008-09-03
  • 打赏
  • 举报
回复
兄弟,你说的方法我早弄过,这只是一种连接方式,使用rmi协议似的连接,是可以的,但要命就在你第2步,需要rmiregistry 9999,我期望的是通过就java -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote
.authenticate=false ,然后通过jconsole 直接输ip,端口连接,这段代码是从tomcat中摘出来的,so,为什么要new 一个JMXConnectorServer呢,有人说我这种情况连不上跟java的安全策略文件有关,但没告诉我到底该怎么弄
qingkangxu 2008-09-03
  • 打赏
  • 举报
回复
大哥,你连JMXConnectorServer都没有new你怎么可能接上阿
1在方法start()的语句
jmxServer.re,gisterMBean(new Monitor(),new ObjectName("tongtech.tw:systemMonitor=huangfeng")); 这句后面加如下代码:

JMXServiceURL jmxURL = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");
JMXConnectorServer connectorServer = JMXConnectorServerFactory
.newJMXConnectorServer(jmxURL, null, jmxServer);
connectorServer.start();


2,要在CMD中,用rmiregistry 9999命令开端口再运行server

3,ok了

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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