【发布时间】:2011-07-22 09:01:53
【问题描述】:
JMX 能否用于两个远程 Java 进程之间的正常通信来回传输一些数据? 如果是这样,为什么在上述场景中 JMX 优于 RMI?
文档说 JMX 是用于管理/监控的,它可以用于调用和返回巨大的对象集合吗?
【问题讨论】:
标签: java communication rmi jmx
JMX 能否用于两个远程 Java 进程之间的正常通信来回传输一些数据? 如果是这样,为什么在上述场景中 JMX 优于 RMI?
文档说 JMX 是用于管理/监控的,它可以用于调用和返回巨大的对象集合吗?
【问题讨论】:
标签: java communication rmi jmx
当然,您可以使用 JMX 形式的普通通信,如果您限制自己使用 Open MBean,您甚至不需要每一端的特殊类型信息(即用于反序列化的自定义 jar)。
JMX 通信的另一个优点是,您可以轻松地将协议栈从 RMI 中切换出来。例如。您可以额外使用像 Jolokia 这样的 JMX HTTP-Bridge 或作为替代品,并获得一些额外的优势(防火墙友好性、批量请求、无类型通信)
JMX 用作普通通信协议的缺点是,JMX 模糊了分层架构,因为 MBean 可以在任何层(表示层、服务层、dao 层......)中注册。您可能只想远程导出服务层,使用 JSR-160,您可以访问在任何层中注册的每个 MBean,从架构的角度来看,这可能是不可取的。
【讨论】:
因为 JMX 不如 RMI 方便。 在 RMI 中,您可以通过接口使用远程对象,因此就像使用本地对象一样。 但是使用 JMX,您必须通过带有签名的字符串名称调用方法。
【讨论】: