【发布时间】:2012-06-12 13:56:17
【问题描述】:
我正在尝试访问部署到 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 {
【问题讨论】:
-
你好穆图;当您说您没有获得 TestServiceMBean 的实例时,究竟发生了什么?你能提供错误的堆栈跟踪吗(假设你得到一个)。
-
当我尝试获取实例作为属性时,这就是我得到的 javax.management.AttributeNotFoundException: No such attribute: Instance at com.sun.jmx.mbeanserver.PerInterface.getAttribute(PerInterface. java:63) 在 com.sun.jmx.mbeanserver.MBeanSupport.getAttribute(MBeanSupport.java:216)
-
在使用代理实例的情况下,它没有给我“TestServiceMBean”实例,而是给我一个类名“$Proxy0”,当我调试它时,它返回了 MBeanServerInvocationHandler 类本身。我尝试将其类型转换为 TestServiceMBean。编译器没有抱怨,但我得到的对象不是 Queue Listener 服务对象。