0

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 サーバーに接続しないのでしょうか?

4

2 に答える 2

0

私はその特定のユーティリティに精通していませんが、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 の内容によってすでに暗示されているようです。

于 2013-05-02T14:56:39.073 に答える