【问题标题】:question on tomcat and jmx关于tomcat和jmx的问题
【发布时间】:2011-08-09 19:55:01
【问题描述】:


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

MBeanServerFactory.findMBeanServer(null);

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

【问题讨论】:

    标签: java spring web-applications tomcat jmx


    【解决方案1】:

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

    【讨论】:

    • @lobster:当您说 JSW 时,您的意思是服务包装器?使用服务包装器,正如我在帖子中提到的,它工作正常。如果我直接通过 Tomcat 启动,我会得到异常
    • 是的,Java 服务包装器。为什么在 Tomcat 中部署时需要服务包装器? Tomcat 本身使用服务包装器。抱歉,这对您的问题没有帮助,但也许我们可以解决一些问题。
    • 使用的特定包装器有很多额外的功能。没有像那样部署InstanceNotFoundException。包装器的配置以-Dcom.sun.management.jmxremote启动jvm,并且启用了使用mbeans的选项在 JSW 配置中。如果我直接从 Tomcat 部署,我不确定是否缺少某些东西
    • 您需要在独立启动 tomcat 时将 -Dcom.sun.management.jmxremote 行添加到 catalina.sh - 我假设您正在执行 catalina.sh start 或 catalina.sh run。在最后添加到 JAVA_OPTS 行。
    • @lobster: 好的,我会检查一下。这是否足够,或者是否需要对 Tomcat MBean 服务器进行任何其他配置?对于 JSW,我启用了 Dcom.sun.management.jmxremote,但我还按照指定为 MBean 设置了另一个配置。Tomcat MBean 服务器还有什么额外的吗?
    猜你喜欢
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多