JMX和RMI之间的区别

JMX的目的是什么?它用于什么? 我一直在浏览JMX上的一些教程,他们所做的只是注册一些Mbeans并从jconsole调用那些Mbeans。 如果这是它的目的,那么JMX和RMI(远程过程调用)之间有什么区别?

提前致谢!

“远程过程调用”是一种分布式计算概念,其中在一个主机上运行的进程可以调用另一个远程主机上的过程。 Java中的RMI是这一概念的一种实现。

MBean是bean类,可以使用JMX总线注册,以监听到达总线的事件或在总线上发送事件或从其他参与的Mbeans等收集各种数据。它最常用于健康监控它可以检查分析引擎的活动连接数,可用内存量和许多其他统计信息。 是的,可以使用RPC机制远程调用它们。 这对于其作为数据收集器的function至关重要,因为在应用程序服务器集群中,必须从所有收集器中提取数据并在一个地方进行整理以进行分析。

JMX架构。

在JMX中,我们使用ObjectNameobjectReference在mbean服务器中注册对象。 然后我们可以远程更改属性或调用方法。

连接器使Java Management Extensions(JMX)技术MBean服务器可供基于Java技术的远程客户端访问。许多不同的连接器实现都是可能的。 特别是,用于通过客户端和服务器之间的连接进行通信的协议有很多种可能性。由JMX Remote API规范定义的一些连接器是

  • RMI连接器 ”:每个符合JMX Remote API标准的实现都必须支持此标准远程方法调用(RMI)协议。
  • 通用连接器 ”:JMX远程API标准还定义了一个直接基于TCP套接字的可选协议,称为JMX消息传递协议(JMXMP)。 标准的实现可以省略JMXMP连接器,但不能省略RMI连接器。 Java SE平台不包含可选的JMXMP连接器。
  • 用户定义的协议 ”:连接器还可以实现JMX技术中未定义的协议。

如果查看上面的体系结构,连接器使用各种通信框架( RMI, IIOP, JMS, WS-* … )提供对MBeanServer API的完全远程访问,而适配器则将API适配到另一个协议(SNMP, …)或者基于Web的GUI (HTML/HTTP, WML/HTTP, …).

通常我们使用JMX连接器连接到MBean服务器,但我们也可以选择其他连接器。

总结JMX是一种Java技术,RMI用于远程方法调用,是远程过程调用接口的Java特定实现,可以在JMX中用于远程通信。

JMX是一个通用API,用于发布监视Java应用程序内部的接口(Java版本的SNMP)。

RMI用于远程方法调用远程过程调用接口的Java特定实现,它们根本不相关。