我们使用Embedded Jetty作为在端口8080上运行的Web服务器,并希望监视Jconsole上的应用程序。启动特定于JMX的Jetty服务器时,我们使用以下系统属性:
-Dcom.sun.management.jmxremote.access.file=jmxremote.access
-Dcom.sun.management.jmxremote.password.file=jmxremote.password
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=8081
虽然JMX和Webserver在两个不同的端口上运行,但客户端是否有办法通过端口8080通过Jconsole / JvisualVM访问JMX? JMX代理是否会帮助我?有可能吗?
提前致谢。
的Ajay
答案 0 :(得分:1)
不是没有一点努力。简而言之,在一个端口上总是只能有一个服务器(或者反过来说:服务器不能共享一个端口)。
如果JMX支持HTTP请求,那么您可以在同一HTTP服务器上将其作为servlet运行。将有一个端口(由HTTP服务器使用),然后HTTP URL将允许服务器确定客户端是否想要与JMX或Web应用程序通信。
但JMX不直接支持HTTP请求。您可以尝试Jolokia(see this question),也可以编写servlet,允许客户端查询某些mbeans(但不使用JMX协议)。
答案 1 :(得分:0)
JMX
规范Connector
可以使用任何协议作为传输,请参阅http://en.wikipedia.org/wiki/File:Jmxarchitecture.png