我正在尝试通过JMX为Minecraft服务器启用远程调试,但我似乎无法使其正常工作。
我在命令行中使用它来启动它:
java -Dcom.sun.management.jmxremote.port=3000 -jar craftbukkit.jar
显然,我没有设置任何身份验证或任何其他内容,但该过程似乎正确启动。我删除了所有auth选项,但没有任何更改。
但是当我跑步时:
lsof | grep 3000
要么
netstat | grep 3000
没有返回任何内容。知道为什么这不正确地监听端口吗?
答案 0 :(得分: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
答案 1 :(得分:0)
除了您已经设置的属性之外,您还需要显式禁用身份验证(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