3

ServerWebアプリ内からとにアクセスしたいと思いますConnector。さらに、埋め込まれたTomcatからこのWebアプリを起動する必要があります。これが私が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();

JMX 1を介してサーバーにアクセスするための典型的な例を使用する場合:

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のブートストラップに失敗したためだと思います。

4

2 に答える 2

2

JMXは正常に動作しているようです。問題は、ルックアップに使用した名前です。になるはずだった:

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

代わりは。

于 2012-05-24T18:04:07.097 に答える
0

を使用して可能PR_JVMOPTIONSです。埋め込まれたTomcatインストールサービスファイルで次の構成パラメーターを使用することで解決しました。

set PR_JVMOPTIONS=-Dcom.sun.management.jmxremote.authenticate=false;-Dcom.sun.management.jmxremote.ssl=false;-Dcom.sun.management.jmxremote.port=9111
于 2018-10-01T05:52:56.177 に答える