所谓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 #增加该用户访问权限,
这样配置就好了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)