2011-04-20 82 views
0


MBeanServerFactory.findMBeanServer(null);究竟是干什么的?
返回所有注册的MBeanServers列表?注册在哪里?
我在问,因为我有以下问题。
我有一个使用服务包装器在Tomcat中部署的java web应用程序。
我在我的server.xml中使用ManagedBeans(启用弹簧)的自定义连接器实现。
如果我通过服务包装启动应用程序一切正常。
如果我直接通过Tomcat启动Web应用程序,似乎部署中断了。
所有我在日志中看到的是,连接器做了关于tomcat和jmx的问题

MBeanServerFactory.findMBeanServer(null); 

,然后尝试调用Bean beanServer.invoke(name, operationName, null, null);
结果是InstanceNotFoundException的。
如果我不使用服务包装,似乎托管的bean未加载?我的理解是否正确?如何调试此问题的任何输入是 非常欢迎!

回答

1

javadoc表示当您通过null时,它返回在当前JVM中注册的服务器。如果您使用的是JSW,那么您不能使用null,因为JSW会将VM作为单独的进程分流。这就是您看到InstanceNotFoundException的原因。

+0

@lobster:当你说JSW你指的是服务包装?使用服务包装,正如我在后文中提到的,它工作的很好。如果我直接通过Tomcat启动,我会得到异常 – Cratylus 2011-04-20 20:56:28

+0

是的,Java服务包装。在Tomcat中部署时,为什么需要服务包装? Tomcat本身使用服务包装器。对不起,这不是在帮助你的问题,但也许我们可以弄清楚什么。 – lobster1234 2011-04-20 20:59:50

+0

使用的具体包装有很多额外features.There没有'InstanceNotFoundException'部署那样。包装的配置启动jvm与'-Dcom.sun.management.jmxremote'并且也使用mbeans的选项被启用在JSW配置中。如果我直接从Tomcat部署,我不确定是否缺少某些东西 – Cratylus 2011-04-20 21:04:12