访问在 HTTP 代理服务器后面运行的启用 JMX 的应用程序
我有一个启用 JMX 的 Java 应用程序 (Java 1.5),位于 HTTP 代理服务器后面。所以我无法直接通过 JConsole 访问它。
我想象的一个解决方案是在我的应用程序中有一个虚拟机内 JMX 客户端,它从 JMX 服务器收集统计信息和配置数据,并通过代理通过 HTTP 定期将其发布到我的外部服务器。如果需要,我的外部服务器会回复任何配置更改,并且 VM 内 JMX 客户端会将这些更改传播到 JMX 服务器,后者将它们应用到应用程序。
我猜想这种情况足够频繁,以至于已经有解决方案解决它。是否有任何帮助框架/库可以通过 HTTP 实现此类访问?
I have a JMX enabled Java application (Java 1.5) sitting behind an HTTP proxy server. So I cannot access it directly through the JConsole.
A solution I imagine would be to have an in-VM JMX client in my application which collects the statistics and the configuration data from the JMX server and posts it to my external server periodically over HTTP through the proxy. My external server replies back with any configuration changes if needed and the in-VM JMX client propagates those changes to the JMX server which applies them to the application.
I'd guess this to be a scenario frequent enough to have solutions already addressing it. Is there any helper framework/library to enable such access over HTTP?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不确定这是否是您所需要的,但有一个非常好的 JMX 到 REST 桥接器,名为 Jolokia 。如果将其添加到应用程序中,您将能够通过 REST 接口与 JMX 交互,该接口可像任何其他 HTTP 流量一样通过 HTTP 代理进行访问。因此,您不仅可以通过 HTTP 建立 JMX 隧道,还可以以更好的格式(HTTP 上的 JSON)公开它。
它有非常好的文档,另请参阅我的展示。
Not sure this is what you need, but there is a very nice JMX to REST bridge called Jolokia out there. If you add it to your application, you will be able to interact with JMX through REST interface that will be accessible via HTTP proxy like any other HTTP traffic. So not only you are tunneling JMX through HTTP, but you are also exposing it in much nicer format (JSON over HTTP).
It has pretty good documentation, also see my showcase.
如果您的服务器托管在 Linux/Unix 上,您可以设置端口转发到它(使用 putty、ssh 或其他工具)。然后启动 JConsole 并指定本地主机和端口以将请求传送到远程服务器。 SSH 端口转发的设置非常简单,您可以在网络上找到充足的示例。
If your server is hosted on Linux/Unix, you can set up port forwarding to it(using putty, ssh or other tools). Then fire up JConsole and specify local host and port to channel requests to your remote server. SSH Port forwarding is pretty trivial to setup and you will find ample examples on web.