3

我正在尝试通过 JMX 为我的世界服务器启用远程调试,但我似乎无法让它工作。

我在命令行上使用它来启动它:

java -Dcom.sun.management.jmxremote.port=3000 -jar craftbukkit.jar

显然,我没有设置任何身份验证或其他任何东西,但该过程似乎可以正确启动。我删除了所有的身份验证选项,没有任何改变。

但是,当我运行时:

lsof | grep 3000 或者 netstat | grep 3000

什么都没有返回。知道为什么这不能正确监听端口吗?

4

2 回答 2

2

添加-Djava.rmi.server.hostname = host ip. 随着

-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false

加上这个-Djava.rmi.server.hostname = host ip会强制 RMI 服务使用主机 ip 而不是127.0.0.1

于 2012-08-16T13:50:15.680 回答
1

除了您已经设置的属性之外,您还需要显式禁用身份验证 (com.sun.management.jmxremote.authenticate=false) 并禁用 SSL (com.sun.management.jmxremote.ssl=false)。将它们捆绑在一起,这是完整的命令行:

java -Dcom.sun.management.jmxremote.port=3000 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar craftbukkit.jar

请注意,这种配置被认为是不安全的,因为任何能够猜到端口 3000 的人都可以与您的机器建立 JMX 连接、浏览 MBean 属性并运行 MBean 操作。如果您对安全配置感兴趣,本文档有更多详细信息:

http://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html

于 2012-07-14T06:25:40.550 回答