【问题标题】:InvocationException on connecting to MBean server from Spring从 Spring 连接到 MBean 服务器时出现 InvocationException
【发布时间】:2013-05-02 11:37:01
【问题描述】:

我正在尝试从我的 Spring 应用程序连接到 MBean 服务器。下面是代码:

public void connect() throws Exception {

    MBeanServerConnectionFactoryBean bean = new MBeanServerConnectionFactoryBean();
    bean.setConnectOnStartup(false);

    Properties environment = new Properties();

    environment.put("java.naming.factory.initial", "com.sun.jndi.rmi.registry.RegistryContextFactory");
    environment.put("java.naming.provider.url", "rmi://117.13.128.104:9308");
    environment.put("jmx.remote.jndi.rebind", "true");

    bean.setEnvironment(environment);
    bean.setServiceUrl("service:jmx:rmi://117.13.128.104/jndi/rmi://117.13.128.104:9308/agent/EODServer");
    bean.afterPropertiesSet();

    MBeanServerConnection server = (MBeanServerConnection)bean.getObject();

    System.out.println("test"); // After bean.getObject() - Debug pointer on this line.
}

在 bean.getObject() 方法调用后设置调试指针。

在调试上述代码时,我得到的 MBeanServerConnection 服务器值低于:

com.sun.jdi.InvocationException 发生调用方法。

MBeanServerConnectionFactoryBean的Environment和ServiceUrl的值设置正确,为什么它没有连接到MBean Server?

【问题讨论】:

    标签: spring jmx mbeans


    【解决方案1】:

    我不熟悉那个特定的实用程序,但看起来 JNDI 和 JMX 配置之间存在一些奇怪的重叠。为什么不简化,直接使用JDK自带的JMXConnectorFactory

    import javax.management.*;
    import javax.management.remote.*;
    ...
    JMXConnector connector = JMXConnectorFactory.connect("service:jmx:rmi://117.13.128.104/jndi/rmi://117.13.128.104:9308/agent/EODServer");
    MBeanServerConnection connection = connector.getMBeanServerConnection();
    

    从技术上讲,如果需要,您可以使用以下方法将环境贴图添加到组合中:

    JMXConnector connector = JMXConnectorFactory.connect("service:jmx:rmi://117.13.128.104/jndi/rmi://117.13.128.104:9308/agent/EODServer", environment);
    

    ...但在我看来,您使用的环境已经被默认连接器和您的 JMXServiceURL 的内容所暗示。

    【讨论】:

      【解决方案2】:

      将java.rmi.server.ignoreStubClasses系统属性设置为true后解决。

      System.setProperty("java.rmi.server.ignoreStubClasses", "true");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-20
        • 1970-01-01
        • 1970-01-01
        • 2014-03-25
        • 1970-01-01
        • 2021-06-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多