JBoss MBeanの実現方法

2514 ワード

JBoss MBeanの実現方法
JBossの下のMBeanはいくつかの実現方法があります。
1,XXとXMBean
public interface XXMBean
{...}
public class XX extends ServiceMBeanSupport implements XXMBean
{ ...}
 
XXがMBeanに登録すると、サーバーは自動的にXMBeanインターフェースを実現するかどうかを探します。
の管理インターフェースはXMBeanインターフェースです。
2,Standard MBeanを引き継ぐ
public class XX extends StandardMBean implements SomeIntf
{ ...}
 
META-INF/jboss-service.xmlの構成項目
<mbean code="       "  name="xxx.xxx.xxx:service=xxxxMBean"/>
 
 
このようにMBeanはSomeIntf管理インターフェースを引き出しています。実現されたインターフェースは従う必要がありません。
XXX+MBeanのモード
3,任意のJava類は、**xmboean.xmlファイルで管理インターフェースを定義します。
public class XX extens ServiceMBean Support
{…}
jboss-service.xmlの設定項目
<mboin code=「XX」xmboean-dd=「reource:xmdesc/XXX-xmboean.xml」
XXX-xmboean.xml内容
<mbean>
<description>Demo</description>
<descriptors>
<interceptors>
<interceptor code="test.MyInterceptor"/>
</interceptors> 
</descriptors>
<class>XX</class>
 
//この値は何でも構いません。XMBeanがxmlファイルを解析する時に呼び出したのは
//public XMLMetaData(String mmbClass Name,String resource Class Name,URL url)
//関数は、すでにreourcel Class Name値に伝えられています。この値はjboss-service.xmlのmbeinのcodeです。
管理インターフェース(属性、方法)の説明…
//ここで何のインターフェースを説明すれば、システムはどんなインターフェースを引き出しますか?もちろんシステムは検査しません。

3つの方法の中で、最後の一つは最も柔軟で、主に取引先の化のintercepterに参加することができるのです。
一例は以下の通りです。
package test;
import org.jboss.mx.interceptor.AbstractInterceptor;
import org.jboss.mx.interceptor.Interceptor;
import org.jboss.mx.server.Invocation;

public class MyInterceptor extends AbstractInterceptor {

public Object invoke(Invocation invocation) throws Throwable
{ 
log.info("Invocation: " + invocation);
AbstractInterceptor ic = invocation.nextInterceptor();
if( ic == null )
{
return invocation.dispatch();
}
else
{
long start = System.currentTimeMillis();
try{
return ic.invoke( invocation );
}catch(Exception e){ 
e.printStackTrace();
return null;
} //I can wrapp some exception
finally
{
log.info("call time : " + ( System.currentTimeMillis() - start ) );
}

} 
}
}
 
MBeanメソッドをキャプチャすることができます。この例はMBeanメソッドの呼び出し時間を表示します。