1

JBOSSAS7.1.1にデプロイされたMBeanサービスにアクセスしようとしています。私のMBeanサービスはキューリスナーでもあります。このMBeanサービスのインスタンスを取得して、別のSARのキューリスナーとして登録しようとしています。

このコードを試しましたが、機能しません。

MBeanServer server  = ManagementFactory.getPlatformMBeanServer(); 
ObjectName mbeanObject =
        new ObjectName("myproject.service.Test:service=com.mytest.program");
TestServiceMBean handler = MBeanServerInvocationHandler.newProxyInstance(
      server, mbeanObject, TestServiceMBean.class, false);

私もこれを試しました

TestServiceMBean testMBeanService =
       (TestServiceMBean)server.getAttribute(mbeanObject,  "Instance");

どちらの場合も、のインスタンスを取得していませんTestServiceMBean。誰かがMBeanテストサービスへのアクセスを取得するのを手伝ってくれませんか。

<mbean code="com.mytest.program.TestService"
      name="myproject.service.Test:service=com.mytest.program">
</mbean>

コードは次のとおりです。

public class TestService implements TestServiceMBean, MessageListener {
4

1 に答える 1

0

ムトゥ;

AttributeNotFoundExceptionの場合: 少なくとも、MBean が実際に登録されていることはわかっています :) したがって、問題は、TestService mbean がInstanceという属性を定義し、それがTestServiceMBeanの型を返し、実際にこれを返すかどうかです。そうでない場合は、それがあなたがする必要があることです。

テストサービス:

public TestServiceMBean getInstance() {
    return this;
}

TestServiceMBean:

public TestServiceMBean getInstance();

呼び出しハンドラーの場合、キャストする必要はありませんが、返されるクラスには期待する名前がありません。これは合成動的プロキシであるためProxy0と呼ばれますが、 TestServiceMBeanインターフェースを実装していて、それに対して操作を呼び出すことができるはずです。

于 2012-06-12T15:29:49.800 に答える