我有一个支持JMX的Java应用程序(Java 1.5(,位于HTTP代理服务器后面。所以我不能直接通过JConsole访问它。
我设想的一个解决方案是在我的应用程序中有一个VM内JMX客户端,它从JMX服务器收集统计数据和配置数据,并通过代理通过HTTP定期将其发布到我的外部服务器。如果需要,我的外部服务器会回复任何配置更改,并且VM中的JMX客户端会将这些更改传播到JMX服务器,JMX服务器会将其应用于应用程序。
我想这是一个非常频繁的场景,解决方案已经解决了这个问题。有没有任何帮助框架/库可以通过HTTP实现这种访问?
不确定这是您所需要的,但有一个非常好的JMX到REST的桥,叫做Jolokia。如果您将其添加到应用程序中,您将能够通过REST接口与JMX进行交互,该接口将像任何其他HTTP流量一样通过HTTP代理进行访问。因此,您不仅通过HTTP对JMX进行隧道传输,而且还以更好的格式(JSON over HTTP(公开它。
它有很好的文档,也可以看看我的展示。
如果您的服务器托管在Linux/Unix上,您可以设置到它的端口转发(使用putty、ssh或其他工具(。然后启动JConsole并指定本地主机和端口以将请求传输到远程服务器。SSH端口转发的设置非常简单,您可以在web上找到大量的示例。