JMX可以用于两个远程Java进程之间的正常通信吗?

时间:2011-07-22 09:01:53

标签: java communication rmi jmx

JMX可以用于两个远程Java进程之间的正常通信来回传输一些数据吗? 如果是这样的话,为什么JMX在上述情况下比RMI更受欢迎?

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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