什么是JMX?

什么是JMX?,第1张

所谓JMX,是Java Management Extensions(Java管理扩展)的缩写,是一个应用程序植入管理功能的框架。用户可以在任何Java应用程序中使用这些代理和服务实现管理。

从图中我们可以看到,JMX的结构一共分为三层:

Mbean分为如下四中

1、根据standard MBean的要求,我们首先要定义一个MBean接口,接口的命名规范以具体的实现类为前缀,为了后续可以注册到MBean Server中

2、定义一个实现类

3、定义agent层

1、 通过工厂类获取Mbean Server,用来做Mbean的容器

2、 ObjectName的取名规范: 域名:name=Mbean名称 , 其中域名和Mbean的名称可以任取。这样定义后,我们可以唯一标示我们定义的这个Mbean的实现类了

3、最后将Hello这个类注册到MbeanServer中,注入需要创建一个ObjectName类, 我们可以用jdk自带的Jconsole用来观察,可以设置属性值和调用相关方法

MBean之间的通信是必不可少的,Notification起到了在MBean之间沟通桥梁的作用。JMX 的通知由四部分组成:

1、Notification这个相当于一个信息包,封装了需要传递的信息

2、Notification broadcaster这个相当于一个广播器,把消息广播出。

3、Notification listener 这是一个监听器,用于监听广播出来的通知信息。

4、Notification filiter 这个一个过滤器,过滤掉不需要的通知。这个一般很少使用。保留Hello及HelloMBean,增加如下

这里的类Jack不仅实现了MBean接口,还继承了NotificationBroadcasterSupport。jack在这里创建并发送了一个消息包。

对HelloAgent做以下修改

我们利用jconsole调用jack的hi方法, 这里当jack发出消息后,Notification被广播至所有的MBean,当有MBean属于Hello类时则调用Hello的printHello()方法

在linux下利用jmx监控Tomcat,在catlina.sh中进行一些环境变零的配置

意思是“jmx 端口1099”。

JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构 *** 作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。JMX体系结构分为设备层、代理层、分布服务层、附加管理协议API四个层次。

扩展资料:

JMX在Java编程语言中定义了应用程序以及网络管理和监控的体系结构、设计模式、应用程序接口以及服务。通常使用JMX来监控系统的运行状态或管理系统的某些方面,比如清空缓存、重新加载配置文件等。

JMX--Java Management Extensions,即Java管理扩展,是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构 *** 作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。优点是可以非常容易的使应用程序具有被管理。

伸缩性的架构每个JMX Agent服务可以很容易的放入到Agent中,每个JMX的实现都提供几个核心的Agent服务,你也可以自己编写服务,服务可以很容易的部署,取消部署。主要提供接口,允许有不同的实现。

JMX体系结构分为以下四个层次:

1、设备层

设备层(Instrumentation Level):主要定义了信息模型。在JMX中,各种管理对象以管理构件的形式存在,需要管理时,向MBean服务器进行注册。该层还定义了通知机制以及一些辅助元数据类。

2、代理层

代理层(Agent Level):主要定义了各种服务以及通信模型。该层的核心是一个MBean服务器,所有的管理构件都需要向它注册,才能被管理。注册在MBean服务器上管理构件并不直接和远程应用程序进行通信,它们通过协议适配器和连接器进行通信。而协议适配器和连接器也以管理构件的形式向MBean服务器注册才能提供相应的服务。

3、分布服务层

分布服务层(Distributed Service Level):主要定义了能对代理层进行 *** 作的管理接口和构件,这样管理者就可以 *** 作代理。然而,当前的JMX规范并没有给出这一层的具体规范。

4、附加管理协议API

定义的API主要用来支持当前已经存在的网络管理协议,如SNMP、TMN、CIM/WBEM等。

参考资料来源:搜狗百科-jmx

首先使用ps -ef 确认你要监控的weblgoic,修改setDomain.sh文件 添加如下内容:

JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.port=9999"

JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.ssl=false "

JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.pwd.file=/opt/bea/jrockit90_150_06/jre/lib/management/jmxremote.password"

# JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.authenticate=false"

export JAVA_OPTIONS

关于jconsole的访问密码,可在该实例所使用的$JRE_HOME/lib/management/下配置,很重要的两个文件是

jmxremote.password.template #配置访问用户名与密码

jmxremote.access #增加该用户访问权限,

这样配置就好了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8598652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存