0

MBean を既存の JBoss 7 プラットフォーム MBeanServer に追加できないというセキュリティ上の理由があります。そこで、独自の mBeanServer と JMXConnectorServer をcustomAuthenticator.

これが、新しい MBeanServer と JMXConnectorServer の Spring Bean 定義です。このコードは、Jetty でアプリケーションを実行すると機能します。jconsole で URL service:jmx:rmi://localhost/jndi/rmi://localhost:17999/sample 経由で接続できましたが、期待どおりのカスタム MBean のみが表示されます。

しかし、同じコードは JBoss 7 では機能しません。JBoss にデプロイして同じ JMX URL に接続しようとすると、次のエラーのダイアログが表示されます: "The connection to myuser@service:jmx:rmi://localhost/ jndi/rmi://localhost:17999/trm は成功しませんでした。もう一度やり直しますか?"

customAuthenticator にブレークポイントを設定しましたが、JMX に接続しようとすると、JBoss がブレークポイントで停止しません。JMXConnectorServer が JBoss によって使用されていないようです。誰でも助けることができますか?既存の JBoss MBeanServer または JMX コネクタ サーバーの構成は他の目的で使用されているため、変更できないことに注意してください。

前もって感謝します。

@Bean
public Object rmiRegistry() throws Exception {
            RmiRegistryFactoryBean factory = new RmiRegistryFactoryBean();
            factory.setPort(17999);
            factory.afterPropertiesSet();
            return factory.getObject();
}

@Bean
@DependsOn("rmiRegistry")
public MBeanServer mBeanServer() {
    MBeanServerFactoryBean factory = new MBeanServerFactoryBean();
    factory.afterPropertiesSet();
    return factory.getObject();
}

@Bean
@DependsOn("rmiRegistry")
public JMXConnectorServer jmxConnectorServer() throws IOException, JMException {
    ConnectorServerFactoryBean factory = new ConnectorServerFactoryBean();
    factory.setServer(mBeanServer());
    factory.setServiceUrl("service:jmx:rmi://localhost/jndi/rmi://localhost:17999/sample");
    factory.setRegistrationPolicy(RegistrationPolicy.FAIL_ON_EXISTING);
    Map<String, Object> props = new HashMap<>();
    props.put(JMXConnectorServer.AUTHENTICATOR, customAuthenticator);
    factory.setEnvironmentMap(props);
    factory.afterPropertiesSet();

    return factory.getObject();
}

@Bean
@DependsOn("rmiRegistry")
public AnnotationMBeanExporter annotationMBeanExporter() {
    AnnotationMBeanExporter result = null;
    result = new AnnotationMBeanExporter();
    result.setServer(mBeanServer());
    return result;
}
4

1 に答える 1

0

JBoss 環境が JMX コネクタ サーバーの設定方法に影響を与えていると思われます。この JMXServiceURL を使用して、一時的なものとして残すのではなく、サービスのリッスン ポート (17998 など) を指定するという追加の手順を実行してみます。

service:jmx:rmi://localhost:17998/jndi/rmi://localhost:17999/sample
于 2014-09-08T20:26:00.467 に答える