JMX可以用于两个远程Java进程之间的正常通信来回传输一些数据吗? 如果是这样的话,为什么JMX在上述情况下比RMI更受欢迎?
文档说JMX用于管理/监控,它可以用于调用和返回大型对象集合吗?
答案 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,你必须通过带有签名的字符串名称来调用方法。