我在远景机器上。我已经使用以下选项启动了tomcat 5.5.27:
CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=9003 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"
当我通过jconsole连接并添加以下服务URL
时service:jmx:rmi:///jndi/rmi://localhost:9003/jmxrmi
它无法连接。有什么想法吗?
答案 0 :(得分:4)
在Ubuntu 10.04上,使用OpenJDK 6和Tomcat 6.0.29,无论有多少 com.sun.management.jmxremote。* 选项,我无法为本地jconsole会话激活JMX使用CATALINA_OPTS传递给java。问题是 -Djava.io.tmpdir 设置,默认为 $ CATALINA_BASE / temp 。我只需要设置:
CATALINA_TMPDIR="/tmp"
在 bin / catalina.sh 的开头,我能够在本地连接jconsole,jmap,jps等。不需要任何 com.sun.management.jmxremote 。* 设置。
答案 1 :(得分:4)
好吧,我原则上认为op给出的URL是错误的但事实并非如此。所以我无法回答。
不过,以下是基础知识:
通过jconsole
进行简单连接。
如果您知道您要连接的JMX服务器具有例如9003的 RMI注册表端口,请使用
连接localhost:9003
代替。
否则,这是我从头开始发现的:
假设您使用“RMI REGISTRY PORT”中的 RMI注册表端口在“TARGET MACHINE”上运行JMX Server(别名'JMX Agent'别名'您要连接的JVM')和'JMX RMI SERVER PORT'上的 JMX RMI服务器端口。
注意:
jmxrmi
。以下URI将导致成功(已测试)
service:jmx:rmi://<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
这看起来很讨厌。让我们把它分开。
此URI是RFC2609“服务位置协议URL”(嗯,它确实是一个URI,对吗?)
它由:
组成service
- 常数jmx:rmi
- 服务类型由以下内容组成:抽象类型 jmx
和网址计划 {{1} } sap 被分解为:
rmi
- ipsite //<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>
- 网址一个消息灵通的JMX客户端连接到“ipsite”以进行JMX-over-RMI交换;但是什么JMX客户端不知道该端口?耐心...
网址分解为:
/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
- 这似乎告诉JMX客户端它可以在后面的位置获取查找信息/jndi/
- 是的,我们在查找键rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
这有点像马车,因为必须首先联系SLP URL的后者部分提供的 RMI注册表。
在搔头之后,直观地说,试试吧:
jmxrmi
是的,这有效!从注册表中很好地获得了JMX RMI服务器端口。再想一想,目标机器也应该从注册表中获取,因此:
service:jmx:rmi://<TARGET_MACHINE>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
更好的是,这也有效!
参考文献:
service:jmx:rmi:///jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
答案 2 :(得分:1)
流程是否在同一个用户下运行?
您还可以通过运行jps和jconsole(两者都在JDK_HOME / bin目录中)进行检查
答案 3 :(得分:0)
这也是OS X 10.7又名Lion的需要。
答案 4 :(得分:0)
我在这里回答了类似的问题:java.rmi.ConnectException: Connection refused to host: 127.0.1.1;
我在这个主题上发现了许多问答,并没有什么能帮助我 - 那是因为我的问题更基本(我能说什么我不是网络大师:))。我在/ etc / hosts中的IP地址不正确。我尝试过的包括CATALINA_OPTS的以下内容:
CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=true -Xmx128M -server
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=7091
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=A.B.C.D" #howeverI put the wrong ip here!
export CATALINA_OPTS
我的问题是我在几个月前更改了我的IP地址,但从未更新我的/ etc / hosts文件。似乎默认情况下,即使我正在查看本地进程,jconsole也会以某种方式使用主机名-i ip地址。最好的解决方案是简单地更改/ etc / hosts文件。
可以工作的另一个解决方案是从/ sbin / ifconfig获取正确的IP地址,并在指定ip地址时使用该IP地址,例如,catalina.sh脚本:
-Djava.rmi.server.hostname=A.B.C.D