java - 对服务器和远程 JMX bean 使用相同的端口

标签 java spring jetty jmx jconsole

我们使用嵌入式 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 Proxy 会帮助我吗?有什么办法可以实现吗?

提前致谢。

阿杰

最佳答案

并非没有一些努力。简而言之,一个端口上始终只能有一台服务器(或者反过来:服务器不能共享端口)。

如果 JMX 支持 HTTP 请求,那么您可以将其作为 servlet 在同一 HTTP 服务器上运行。将有一个端口(由 HTTP 服务器使用),然后 HTTP URL 将允许服务器确定客户端是否想要与 JMX 还是 Web 应用程序对话。

但是JMX不直接支持HTTP请求。您可以尝试Jolokia ( see this question ) 或者您可以编写 servlet,允许客户端查询某些 mbean(但没有 JMX 协议(protocol))。

关于java - 对服务器和远程 JMX bean 使用相同的端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18334587/

相关文章:

java - Android调试器隐藏局部变量

java - 为 XMLRootElement 命名

java - 如何使用 XML 将 Jetty 请求日志设置为默认时区

java - Servlet 无法为简单的 applet 提供服务

java - Jetty 在多个 TCP 端口上发布端点

java - 按列将数据插入 PostgreSQL 中的行

java - Logback SMTPAppender 限制速率

java - 搜索包含所有特殊字符的数据库表

java - Freemarker 和 hashmap。我如何获得键值

java - 如何刷新java中网络名称的解析?