我需要将我的 .Net 应用程序连接到其他人的 JMX 代理。我读到这根本不是完成的事情,我应该使用肥皂或其他任何东西。由于这不会发生,是否有任何库或互操作技术可以帮助我?我只对调用远程操作或返回字符串结果等简单的事情感兴趣。
4 回答
.NET 确实不是用于与 JMX 对话的技术。JMX 是一个内置标准,它是 Java 的一部分,但非常特定于在 Java 中运行。我假设您无法控制您尝试使用的应用程序,因为您表示您正在尝试使用其他人的 JMX 代理。
在这种情况下,您可能需要考虑使用 Java 编写您的应用程序或其中的一部分。这是访问 JMX 的最佳方式。如果这不是一个选项,您确实可以考虑一些事情:
1) 检查您正在连接的应用程序是否可以将数据公开为 JMX 以外的其他内容。允许通过 Web 服务访问相同的数据通常并不难。
2) 编写一个与 JMX 服务器对话并公开 Web 服务的小型 Java 包装器。这允许您查询反过来通过 JMX 的 Web 服务。
3) JMX 必须使用其他代理来允许它与不同的技术进行通信。您可以使用 SNMP 代理之类的东西并使用 .NET 中的 SNMP 陷阱。更多信息可以在这里找到:http: //java.sun.com/javase/6/docs/technotes/guides/management/snmp.html
如果您启动 HtmlAdaptorServer - 您可以使用 URL 来使用标准 HTTP 调用来调用 JMX 方法。
作为系统管理任务的一部分,我过去曾从 Perl 完成此操作。如果 JMX 接口发生很大变化,它就不漂亮并且无法维护。但是..如果你需要一个快速而肮脏的黑客 - 就是这样!
Java 管理扩展 (JMX) 代理的Web 服务连接器和参考实现ws-jmx-connector将是我的选择。JSR 262 将为跨平台/跨语言的企业集成项目提供新的机会,但不幸的是,开发速度已经放缓。
它只需要一些 SOAP 调用来调用 JMX 管理接口的所有操作,IIRC 甚至包括回调/通知。
你可以用IKVM做到这一点。它是 .Net CLR 编译器的 Java 字节码,与 JMX 一起工作得很好。