【问题标题】:Can JMX be used for normal communication between two remote Java processes?JMX可以用于两个远程Java进程之间的正常通信吗?
【发布时间】:2011-07-22 09:01:53
【问题描述】:

JMX 能否用于两个远程 Java 进程之间的正常通信来回传输一些数据? 如果是这样,为什么在上述场景中 JMX 优于 RMI?

文档说 JMX 是用于管理/监控的,它可以用于调用和返回巨大的对象集合吗?

【问题讨论】:

    标签: java communication rmi jmx


    【解决方案1】:

    当然,您可以使用 JMX 形式的普通通信,如果您限制自己使用 Open MBean,您甚至不需要每一端的特殊类型信息(即用于反序列化的自定义 jar)。

    JMX 通信的另一个优点是,您可以轻松地将协议栈从 RMI 中切换出来。例如。您可以额外使用像 Jolokia 这样的 JMX HTTP-Bridge 或作为替代品,并获得一些额外的优势(防火墙友好性、批量请求、无类型通信)

    JMX 用作普通通信协议的缺点是,JMX 模糊了分层架构,因为 MBean 可以在任何层(表示层、服务层、dao 层......)中注册。您可能只想远程导出服务层,使用 JSR-160,您可以访问在任何层中注册的每个 MBean,从架构的角度来看,这可能是不可取的。

    【讨论】:

      【解决方案2】:

      因为 JMX 不如 RMI 方便。 在 RMI 中,您可以通过接口使用远程对象,因此就像使用本地对象一样。 但是使用 JMX,您必须通过带有签名的字符串名称调用方法。

      【讨论】:

      • JMX can 也可以通过代理对象使用,代理对象的行为与普通 RMI 调用非常相似(在这种情况下,双方都需要 MBean 接口),但它是仍然不是所描述用例的完美解决方案。
      • 感谢大家的反馈!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 2017-10-31
      相关资源
      最近更新 更多