quartz jmx

3. 設定 quartz schedule jobs
jobdetails 跟 triggers 的設定有點多就不列出來了,請看程式下載區的完整範例
quartz 1.6 也支援 JMX,可透過 org.quartz.scheduler.jmx.export=true 來啟動
不過支援並不完整,只能看到 scheduler 的資訊,triggers 和 jobdetails 的資訊看不到
我自定 com.fw.jmx.quartz.SchedulerMBean 來解決這個問題(請下載quartzmbean.jar)
為了系統的穩定性,故除了 scheduler 可以執行 start, standby, shutdown 之外
triggers 和 jobdetails 都是不可更改及執行的,有需要的人可自行更改
下面是 mbean 的設定

1
2
3
4
< bean id = "schedulerMBean" class = "com.fw.jmx.quartz.SchedulerMBean" >
     < constructor-arg ref = "scheduler" />
     < constructor-arg ref = "triggers" />
</ bean >

constructor第一個參數是 scheduler 的 reference
第二個參數是 trigger list 的 reference

4. export mbeans

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<bean id= "mbeanServer"
     class = "org.springframework.jmx.support.MBeanServerFactoryBean" >
     <property name= "locateExistingServerIfPossible" value= "true" />
</bean>
 
<bean id= "exporter"
     class = "org.springframework.jmx.export.MBeanExporter" >
     <property name= "beans" >
         <map>
             <entry key= "server:name=log4j" value-ref= "log4jMBean" />
             <entry key= "server:name=FWScheduler"
                 value-ref= "schedulerMBean" />
         </map>
     </property>
     <property name= "server" ref= "mbeanServer" />
</bean>

mbean server 由 java.lang.management.ManagementFactory.getPlatformMBeanServer() 取得
MBeanExporter 則是註冊 mbeans 到 mbean server
entry key 是 mbean object name
value-ref 是上面定義的 mbean bean name
這邊註冊的 mbeans 只有兩個,因為 c3p0 會由 DynamicPooledDataSourceManagerMBean 來註冊

5. 執行程式
為了可以監控 mbeans 要在 java 指令後加上 -Dcom.sun.management.jmxremote 的參數
如 : java -Dcom.sun.management.jmxremote com.fw.jmx.TestMain
注意 : 這個參數是為了在 local 監控才需要,如用 mx4j HttpAdaptor(請看附錄)則不需要

6. 執行 jmx console
在命令列模式執行 jconsole

jconsole 抓到剛執行的程式,直接點選 Connect


選取 MBeans tab 會列出所有已註冊的 mbeans,上方有兩個 tabs,Attributes 和 Operations
以 FWScheduler 為例,可以看執行的狀況及啟動或停止所有的 schedules
 
 
附錄1
執行 jconsole 一定要在 local 裝 JDK 並不是那麼方便
想提供網頁供 administrator 設定可用 mx4j HttpAdaptor
方法很簡單
a. 多加兩個 bean 到 spring 設定檔

1
2
3
4
5
6
7
8
< bean id = "xsltProcessor"
     class = "mx4j.tools.adaptor.http.XSLTProcessor" />
 
< bean id = "httpAdaptor"
     class = "mx4j.tools.adaptor.http.HttpAdaptor" >
     < property name = "processor" ref = "xsltProcessor" />
     < property name = "port" value = "9001" />
</ bean >

b. 在 MBeanExporter 裡註冊

1
2
3
4
< entry key = "server:name=HttpAdaptor"
     value-ref = "httpAdaptor" />
< entry key = "server:name=XSLTProcessor"
     value-ref = "xsltProcessor" />

c. 更改啟動的 main method 加入

1
2
3
4
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
         "appContext.xml" );
HttpAdaptor httpAdaptor = (HttpAdaptor) context.getBean( "httpAdaptor" );
httpAdaptor.start();

d. 連到 http://localhost:9001 就可以看到設定頁面啦

有點醜,有需要可自行更改 XSLTProcessor
 
 
附錄2
第二個選擇是用 JDMK HtmlAdaptorServer(需下載 jdmkrt.jar)
a. 加入 spring 設定檔

1
2
3
4
< bean id = "htmlAdapter"
     class = "com.sun.jdmk.comm.HtmlAdaptorServer" >
     < property name = "port" value = "9001" />
</ bean >

b. 在 MBeanExporter 裡註冊

1
2
< entry key = "server:name=htmlAdapter"
     value-ref = "htmlAdapter" />

c. 更改啟動的 main method 加入

1
2
3
4
5
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
         "appContext.xml" );
HtmlAdaptorServer htmlAdapter = (HtmlAdaptorServer) context
         .getBean( "htmlAdapter" );
htmlAdapter.start();

d. 連到 http://localhost:9001 就可以看到設定頁面啦

這比 mx4j 好看多了
 
 
執行環境
JDK 1.5.0_11(因為 1.6 的 jconsole 太醜了)
spring 2.5
log4j 1.2.14
c3p0 0.9.1.2
quartz 1.6
mx4j 3.0.2

參考資料
JMX Tutorial
Spring JMX
log4j 1.2
c3p0
Quartz JMX Management
MX4J
Java Dynamic Management Kit

程式下載
appContext.xml
c3p0.properties
MyBean.java
TestMain.java
quartzmbean.jar(原始檔在此)
jdmkrt.jar


来源: http://fenriswolf.me/2012/03/20/jmx1-%E7%AE%A1%E7%90%86%E8%87%AA%E5%B7%B1%E7%9A%84-server/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值