jp.terasoluna.fw.batch.monitor
クラス MBeanRegister

java.lang.Object
  上位を拡張 jp.terasoluna.fw.batch.monitor.MBeanRegister

public class MBeanRegister
extends java.lang.Object

ジョブをJMXで監視するための登録クラス。

jp.terasoluna.fw.batch.monitor.MonitorableJobStatusMBeanを実装した クラスが監視対象となる。

設定例
本機能を使用する場合、フレームワークBean定義ファイルとデフォルトBean定義ファイルに以下の内容を設定する。
以下の例では監視を行い、監視するジョブ(子ジョブ含む)の上限値が20である。

- フレームワークBean定義ファイル(FrameworkBean.xml)設定例。
     <!-- 監視定義。-->
     <bean id="MBeanRegister" class="jp.terasoluna.fw.batch.monitor.MBeanRegister">
       <property name="manageableJobSize" ref="manageableJobSize"/>
     </bean>

- デフォルトBean定義ファイル(DefaultValueBean.xml)設定例。
     <!-- ジョブ監視機能の使用有無を設定。-->
     <util:constant id="useMonitorable" static-field="java.lang.Boolean.True"/>

     <!-- ジョブ監視上限値を設定。-->
     <bean id="manageableJobSize" class="java.lang.Integer">
       <constructor-arg value="20"/>
     </bean>


フィールドの概要
private static org.apache.commons.logging.Log log
          ログインスタンス。
private static int manageableJobSize
          MBeanServerに登録するMBeanの上限値。
private static int mbeanCount
          ジョブ登録数のカウント。
private static java.util.Queue<java.lang.String> registerChildObjectName
          MBeanServerに登録された子ジョブのMBean名を保持するマップ。
private static java.util.Map<java.lang.String,JobStatus> registerMBeanJobStatusMap
          MBeanServerに登録されたMBean名を保持するマップ。
private static java.util.Queue<java.lang.String> registerParentObjectName
          MBeanServerに登録された親ジョブのMBean名を保持するマップ。
private  javax.management.MBeanServer server
          MBean を操作するためのインスタンス。
 
コンストラクタの概要
MBeanRegister()
          コンストラクタ。
 
メソッドの概要
private  boolean deleteMBean(java.lang.String registerName)
          MBeanServerからMBeanを削除する。
private  java.lang.String getRegistName(JobStatus jobStatus)
          MBean登録名を生成し、返却する。
 void registerMBean(JobStatus jobStatus)
          MBeanServerにJobResult(mbean)を登録する。
 void setManageableJobSize(int manageableJobSize)
          MBeanServerへの登録上限値を設定する。
private  void unregisterMBean()
          MBeanの登録を解除する。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

log

private static org.apache.commons.logging.Log log
ログインスタンス。


manageableJobSize

private static int manageableJobSize
MBeanServerに登録するMBeanの上限値。


server

private javax.management.MBeanServer server
MBean を操作するためのインスタンス。


registerMBeanJobStatusMap

private static java.util.Map<java.lang.String,JobStatus> registerMBeanJobStatusMap
MBeanServerに登録されたMBean名を保持するマップ。


mbeanCount

private static int mbeanCount
ジョブ登録数のカウント。


registerParentObjectName

private static java.util.Queue<java.lang.String> registerParentObjectName
MBeanServerに登録された親ジョブのMBean名を保持するマップ。


registerChildObjectName

private static java.util.Queue<java.lang.String> registerChildObjectName
MBeanServerに登録された子ジョブのMBean名を保持するマップ。

コンストラクタの詳細

MBeanRegister

public MBeanRegister()
コンストラクタ。

メソッドの詳細

registerMBean

public void registerMBean(JobStatus jobStatus)
MBeanServerにJobResult(mbean)を登録する。

パラメータ:
jobStatus - ジョブステータス

getRegistName

private java.lang.String getRegistName(JobStatus jobStatus)
MBean登録名を生成し、返却する。

親ジョブの登録名は
「JOB:name=ジョブID」 または
「JOB:name=ジョブID_ジョブリクエストNo」(ジョブリクエストNoが空文字以外 の場合)であり、 子ジョブの登録名は
「親ジョブの登録名,name2=分割キー」 となる。

パラメータ:
jobStatus - ジョブステータス
戻り値:
MBean登録名

unregisterMBean

private void unregisterMBean()
                      throws javax.management.MalformedObjectNameException,
                             java.lang.NullPointerException,
                             javax.management.AttributeNotFoundException,
                             javax.management.InstanceNotFoundException,
                             javax.management.MBeanException,
                             javax.management.ReflectionException
MBeanの登録を解除する。

登録数がmanageableJobSizeを超える場合、 登録順が古くジョブ状態が終了のものから解除する。
終了状態のジョブが無い場合は、終了状態に関係なく 登録順が古い子ジョブから解除する。

例外:
java.lang.NullPointerException - ObjectNameの引数がnullの場合
javax.management.MalformedObjectNameException - ObjectNameの引数の文字列の形式が正しくない場合
javax.management.ReflectionException - 設定メソッドの呼び出し時にスローされる java.lang.Exception をラップする場合
javax.management.MBeanException - MBeanの取得メソッドによってスローされる例外をラップする場合
javax.management.InstanceNotFoundException - 指定されたMBeanがMBeanサーバに登録されていない場合
javax.management.AttributeNotFoundException - MBean の指定された属性がアクセス不能である場合

deleteMBean

private boolean deleteMBean(java.lang.String registerName)
                     throws javax.management.InstanceNotFoundException,
                            javax.management.MBeanRegistrationException,
                            javax.management.MalformedObjectNameException,
                            java.lang.NullPointerException
MBeanServerからMBeanを削除する。

パラメータ:
registerName - MBean登録名
戻り値:
削除成功ならtrue
例外:
javax.management.InstanceNotFoundException - 指定されたMBeanが存在しない場合の例外
javax.management.MBeanRegistrationException - MBeanRegistrationで発生した例外
javax.management.MalformedObjectNameException - 文字列の形式が有効なObjectNameに対応していない場合の例外
java.lang.NullPointerException - NullPointerException

setManageableJobSize

public void setManageableJobSize(int manageableJobSize)
MBeanServerへの登録上限値を設定する。

パラメータ:
manageableJobSize - 登録上限値