无法从tomcat mbean连接远程jmx服务器

时间:2014-10-30 13:35:11

标签: java tomcat jmx

对我的环境: - Java 1.5 - Tomcat 5.5

我正在尝试从运行在不同计算机上的web-app实例访问远程mbeans,以实现某些集群目的。一般情况下,我试图使用包含在某种jmx服务器类中的rmi存根从mbean内部访问其他远程mbeans:

public class JMXConnect {

PrintStream   out=    null;
JMXServiceURL    target=    null;
JMXConnector    connector=    null;
MBeanServerConnection   remote=   null;


String   serviceURL  =  "service:jmx:rmi:///jndi/rmi://"+this.host+":"+this.port+"/jmxrmi";

target   =   new   JMXServiceURL(serviceURL);

connector   =   JMXConnectorFactory.connect(target);

remote   =   connector.getMBeanServerConnection();

ObjectName bean    =    null;

bean   =   new   ObjectName("MbeanName");

Object    returnval   =    remote.getAttribute(bean,"TotalSessionCount");

问题是,当我尝试在tomcat上下文之外使用这段代码时,它运行正常,但是从tomcat中的这个mbean开始,它会引起麻烦:

java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.NoInitialContextException: Cannot instantiate class: org.apache.naming.java.javaURLContextFactory [Root exception is java.lang.ClassNotFoundException: org.apache.naming.java.javaURLContextFactory]

[exec]在javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:317) [exec]在javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)

我在tomcat / common / lib / naming-factory.jar中找到了缺少的类。但是我不知道在哪里包括这个权利(试过几个地方)也不知道这个课程的内容是什么,或者我可能在这里误解了什么。所有这一切的目的是我想让我的一些mbeans使用rmi存根在不同的机器上相互协作。

1)如何解决错误? 2)这种方法有用吗?

0 个答案:

没有答案