1

我正在尝试访问部署到 JBOSS AS 7.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并且它实际上返回this吗?如果没有,这就是你需要做的。

测试服务:

public TestServiceMBean getInstance() {
    return this;
}

测试服务MBean:

public TestServiceMBean getInstance();

对于调用处理程序,您不需要强制转换,但返回的类不会具有您期望的名称。之所以称为Proxy0,是因为它是一个合成动态代理,但您应该会发现它确实实现了TestServiceMBean接口,并且您应该能够针对它调用操作。

于 2012-06-12T15:29:49.800 回答