【问题标题】:Is it possible to enable JMX in embedded Tomcat 7?是否可以在嵌入式 Tomcat 7 中启用 JMX?
【发布时间】:2012-05-24 17:52:12
【问题描述】:

我想从我的 web 应用程序中访问 ServerConnectors。此外,我需要从嵌入式 Tomcat 启动这个 webapp。这是我启动 Tomcat 的方式:

Tomcat tomcat = new Tomcat();
tomcat.setPort(port);
StandardServer server = (StandardServer) tomcat.getServer();
server.addLifecycleListener(new AprLifecycleListener());
tomcat.addWebapp("/", webapp.getAbsolutePath());
tomcat.start();
tomcat.getServer().await();

当我使用typical example通过JMX1访问服务器时:

import javax.management.*;
import org.apache.catalina.Server;

MBeanServer mBeanServer = MBeanServerFactory.findMBeanServer(null).get(0);
ObjectName name = new ObjectName("Catalina", "type", "Server");
Server server = (Server) mBeanServer.getAttribute(name, "managedResource");

我明白了:

Caused by: javax.management.InstanceNotFoundException: Catalina:type=Server
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1094)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:662)
at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638)

我认为这是因为我无法以某种方式引导 JMX。

【问题讨论】:

    标签: tomcat tomcat7 jmx


    【解决方案1】:

    看起来 JMX 运行良好,问题在于我用于查找的名称。应该是:

    ObjectName name = new ObjectName("Tomcat", "type", "Server");
    

    改为。

    【讨论】:

      【解决方案2】:

      可以使用PR_JVMOPTIONS。我通过在我的嵌入式 tomcat 安装服务文件中使用以下配置参数解决了它。

      set PR_JVMOPTIONS=-Dcom.sun.management.jmxremote.authenticate=false;-Dcom.sun.management.jmxremote.ssl=false;-Dcom.sun.management.jmxremote.port=9111
      

      【讨论】:

        猜你喜欢
        • 2013-02-24
        • 2020-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-21
        • 2015-09-11
        • 2018-10-28
        相关资源
        最近更新 更多