JCONSOLE的连接问题

使用JCONSOLE监控远程LINUX运行的JAVA进程,总是在报连接失败的错误。

默认的配置文件所在目录。jre/lib/management/jmxremote.password 配置用户名和密码。文件访问权限要严格限制,否则程序无法启动(有提示)。

resin启动:httpd.sh -Xmx1024M -Dcom.sun.management.jmxremote.port=8000 -Dcom.sun.management.jmxremote.ssl=false start
被监控的服务器端增加启动参数意义

-Dcom.sun.management.jmxremote.port=8000
rmiregistry端口8000


-Dcom.sun.management.jmxremote.ssl=false
不用ssl就关闭掉,忘了默认是不是打开的

2)本机上使用jconsole连接远程的8000端口
报连接失败,检查网络情况,8000端口有在监听等待,本地机器能够连接上对端机器的8000端口。切换了一台FreeBSD机器,情况依旧。
3)去网上找了一下。该网文链接如下:
http://svr.wjworld.net/soft/P1558/I7132389.shtml
4)尝试抓包分析,发现是RMI的二进制协议,无法解读,报文中有127.0.0.1等字眼,从关键字判断是RMI下载的STUB文件。
5)继续查找,发现了一篇有价值的文章谈到这个问题,是服务器端解释机器名的问题,如果服务器端hostname -i被定向到127.0.0.1则会出现连接失败的问题。修改/etc/hosts文件,使hostname -i 指向正确的IP,还是不行。
这篇文章链接如下:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6209663
6)停止服务器防火墙,可以连上,问题解决。发现
netstat -lntp
除了8000正常端口外java还开了一个端口,而JConsole连接过来的是另一个端口,而且重启后这个端口是随机的,每次启动JVM都会变。tcpdump抓包发现每次都连接8000之后连另外随机的端口。没办法暂时防火墙只好开高端口。
7)可能的问题原因分析:JCONSOLE连接上监控的进程,从监控进程下载了RMI远程调用的STUB文件?该STUB访问服务器的进程,
服务器端的地址可能是通过hostname -i类似机制获得。

8)对于防火墙的问题:google到下面一些解决方式:


set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=7878 
这样是表示端口方式的访问,用jconsole连接的时候,serviceUrl是: xxx.xxx.xxx.xxx:7878 
在java程序中可以创建JMXConnectorServer,jmx 的serviceUrl可以写成 : 
service:jmx:rmi://xxx.xxx.xxx.xxx:3001/jndi/rmi://xxx.xxx.xxx.xxx:9875/myconnector 
服务端代码:

MBeanServer mbs = MBeanServerFactory.createMBeanServer("HelloAgent");

Registry aa=LocateRegistry.createRegistry(9000);

		String rmiurl = "service:jmx:rmi://localhost:3001/jndi/rmi://localhost:9000/server";

		JMXServiceURL url= new JMXServiceURL(rmiurl);

		Map<String,String> env = new HashMap<String,String>();

		JMXConnectorServer jmxcs=JMXConnectorServerFactory.newJMXConnectorServer(url, env, mbs);

客户端代码 
JMXServiceURL url = new JMXServiceURL(rmiurl);

		javax.management.remote.JMXConnector jmxc = javax.management.remote.JMXConnectorFactory

				.connect(url);

		MBeanServerConnection msc = jmxc.getMBeanServerConnection();

http://www.javaeye.com/topic/59378


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值