JBoss MBeanの実現方法
JBoss MBeanの実現方法
JBossの下のMBeanはいくつかの実現方法があります。
1,XXとXMBean
XXがMBeanに登録すると、サーバーは自動的にXMBeanインターフェースを実現するかどうかを探します。
の管理インターフェースはXMBeanインターフェースです。
2,Standard MBeanを引き継ぐ
META-INF/jboss-service.xmlの構成項目
このように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内容
//この値は何でも構いません。XMBeanがxmlファイルを解析する時に呼び出したのは
//public XMLMetaData(String mmbClass Name,String resource Class Name,URL url)
//関数は、すでにreourcel Class Name値に伝えられています。この値はjboss-service.xmlのmbeinのcodeです。
管理インターフェース(属性、方法)の説明…
//ここで何のインターフェースを説明すれば、システムはどんなインターフェースを引き出しますか?もちろんシステムは検査しません。
3つの方法の中で、最後の一つは最も柔軟で、主に取引先の化のintercepterに参加することができるのです。
一例は以下の通りです。
MBeanメソッドをキャプチャすることができます。この例は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メソッドの呼び出し時間を表示します。