利用spring和JMX监测程序运行

原创 2006年06月11日 20:19:00

    最近参加短信网关的开发,开发技术采用了spring+hibernate+mule+jms;从业务层发送到手机用户的信息先发送到JMS服务器的一个队列里(jms:queue_MT),短信网关一直监测该队列(jms:queue_MT),如果发现队列中有新的信息就取出准备发送;这样可以实现了架构的松耦合。

   但是由于移动方面规定的滑动窗口大小只有16,如果几个不同的业务同时向用户群发信息的话就会造成有很多信息堵塞。上个星期五,我的师兄告诉我由于发送信息的速度比较慢,已经上行了20000条信息,但是只收到5000条信息的回复,也就是说有15000条信息在等待发送。为了实时监测短信网关发送信息的情况,周末决定利用JMX实现对网关的监测。主要是监测待发送信息的数量。

1.导出的MBean为ConnectionBean,该类有一size的属性标识待发送信息的数量
<beans>
 <bean id="connection" class="com.ll.smsbeans.ConnectionBean">
      <constructor-arg index ="0" ><value>900509</value></constructor-arg>
   <constructor-arg index ="1"><value>1234</value></constructor-arg>
    </bean>
 
 2.配置MbeanExporter类并传入需要导出的MBean

代码:
 <bean id="exporter" class="org.springframework.jmx.export.MBeanExporter">
  <property name="beans">
   <map>
    <entry key="bean:name=connectionBean">
      <ref local="connection"/>
    </entry>
   </map>
  </property>
  <property name="server" ref="mbeanServer"/>
 </bean>
   

3.注意当使用一个RMI-based连接器时,你需要启动lookup服务(tnameserv或rmiregistry)用来完成名称注册。如果你通过RMI使用Spring发布远程服务,Spring还要构造一个RMI注册项。如果没有,你可以容易地使用下面的配置项启动一个注册:

代码:
  <bean id="registry" class="org.springframework.remoting.rmi.RmiRegistryFactoryBean"> 
   <property name="port" value="9875"/>
  </bean>

4.创建一个MBeanServer
如上所示的配置中假定该应用运行在一个有且只有一个MbeanServer正在运行的环境中。在这种情况下,Spring将定位正在运行的MbeanServer并注册你的beans到其中。这在你的应用运行在一个拥有自己的MbeanServer的容器内如Tomcat或者IBM WebSphere时很有用。
然而,这个方法无法用于独立环境中,或者当它运行在一个没有提供MbeanServer的容器时。为了克服这种困难,你可以通过在配置中声明添加一个org.springframework.jmx. support.MbeanServerFactoryBean的实例来创建MbeanServer的实例。通过设置MbeanExporter的server属性为MbeanServerFactoryBean,你同样可以确保这个MbeanServer被使用。如下所示:
 代码:
 <bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean"/>
 

5.服务端连接器
Spring JMX使用下面的配置创建、启动和发布一个JSR-160 JMXConnectorServer

代码:
 <bean id="serverConnector" class="org.springframework.jmx.support.ConnectorServerFactoryBean">
       <property name="objectName" value="connector:name=rmi"/>
      <property name="serviceUrl"  value="service:jmx:rmi://localhost/jndi/rmi://localhost:9875/myconnector"/>
   </bean>

  最后,可以利用JDK5.0附带的JMX工具JConsole.exe作为客户端连接到服务器中实时参考信息的发送情况。在JConsole.exe的 连接->高级->service地址中填写:service:jmx:rmi://localhost/jndi/rmi://localhost:9875/myconnector即可!

spring4 集成JMX监控

单机监控在javaconfig类中开启注解@EnableMBeanExport或者 在传统的xml中添加来看看如何使用注解吧@ManagedResource 将MBeanController导出为MB...

spring通过annotation注解注册MBean到JMX实现监控java运行状态

spring通过annotation注解注册MBean到JMX实现监控java运行状态,http://www.zuidaima.com/share/1828116267568128.htm...
  • yaerfeng
  • yaerfeng
  • 2014年06月03日 09:40
  • 11000

使用Hibernate EntityManager(摘自hibernate实战第二版)

     Hibernate EntityManager是围绕提供JPA编程接口的Hibernate Core的一个包装,支持JPA实体实例的生命周期,并允许你用标准的Java Persistence...

Java之——Spring与RMI集成实现远程访问(插曲)

使用Spring对RMI的支持,可以非常容易地构建你的分布式应用。在服务端,可以通过Spring的org.springframework.remoting.rmi.RmiServiceExporter...

【fun】自制程序运行时间监测头文件

首先,先看一下头文件所提供的接口:

用JMX监测JVM的运行参数

翻译自http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html  用JMX管理你的JVM JMX是Jav...

利用VS的代码优化和openmp并行计算提高程序运行速度

转载:http://www.lai18.com/content/6954092.html?from=cancel 以前利用多线程为拥有较大量计算的程序提速过,但也深知多线程的同步和程序的调试...
  • tjdgluo
  • tjdgluo
  • 2017年04月18日 10:34
  • 405

如何利用VS的代码优化和openmp并行计算提高程序运行速度

以前利用多线程为拥有较大量计算的程序提速过,但也深知多线程的同步和程序的调试是一大坑,最近为实验室的项目学习了一点VS下优化代码的设置以及利用openmp加速运算,都是些很基本的提升程序速度的方法,只...

利用torque搭建分布式程序运行环境

利用torque搭建分布式程序运行环境 第一篇自己翻译英文资料以及自己总结的博客。 一、torque简介 Torque 提供批量作业和分布计算机资源的控制功能。它基于原始的PBS(Portable ...

利用系统滴答时间计算实际程序运行时间

1、前言 测试一个程序的执行时间,时间包括用户CPU时间、系统CPU时间、时钟时间。之前获取之前时间都是在程序的main函数用time函数实现,这个只能粗略的计算程序的执行时间,不能准确的获取其他时...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用spring和JMX监测程序运行
举报原因:
原因补充:

(最多只允许输入30个字)