【问题标题】:Spring with JMX authentication带有 JMX 身份验证的 Spring
【发布时间】:2013-05-23 06:47:50
【问题描述】:

我可以在 MBean 中注册一个类,但无法通过 jconsole 连接。为什么我通过 JVM 参数禁用了 jmx 身份验证,却无法连接运行此应用程序。

这是我的 java 类、spring 属性文件和 JVM 参数

package com.mkyong.jmx;

public interface JmxCoreComands {
    public void start();
    public void stop();
    public void report();   
}


package com.mkyong.jmx;

import org.springframework.stereotype.Service;

@Service
public class JmxService implements JmxCoreComands {

    @Override
    public void start() {
        System.out.println("Jmx Service start");
    }

    @Override
    public void stop() {
        System.out.println("jmx service stop");
    }

    @Override
    public void report() {
        System.out.println("jmx service report");
    }

}

Spring 属性 XML:

<bean id="jmxAdapter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
        <property name="beans">
            <map>
                <entry key="SPRING:Name=TestRun">
                    <ref bean="jmxService" />
                </entry>
            </map>
        </property>
        <!-- managemethods property starts -->
        <property name="assembler">
            <bean
                class="org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler">
                <property name="managedInterfaces">
                    <value>com.mkyong.jmx.JmxCoreComands</value>
                </property>
            </bean>
        </property>
        <!-- managemethods property ends -->
    </bean>

JVM参数:

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8014 
-Dcom.sun.management.jmxremote.authenticate=false 
-Xmx1024M 
-Xdebug 
-Xnoagent 
-Xrunjdwp:transport=dt_socket,address=8454,server=y,suspend=n 
-Djava.compiler=NONE

【问题讨论】:

  • 您根本无法将 JVisualVM 连接到 JMXServer,还是只是找不到 MXBean? -- 是否有任何错误/异常?
  • BTW:你的 bean 是 MBean 而不是 MXBean(MXBeans 的命名约定是接口的名称以“MXBean”结尾) - 但目前这应该没问题
  • 我可以远程登录 8014 端口,但我无法通过 jconsole 建立连接,用户名和密码为空白。我已经使用了 JMX 严重的时间,所以我确信我将正确的参数填充到正确的位置。另外java站点也没有异常
  • 是远程连接吗?防火墙?你使用哪个连接字符串?
  • 您的应用程序是运行在 tomcat 上的 Web 应用程序吗?

标签: java spring jmx


【解决方案1】:

如下更改我的 JVM 配置后,我可以通过 JMX 连接应用程序。

-Djava.rmi.server.hostname=127.0.0.1
-Dcom.sun.management.jmxremote.port=8014
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

【讨论】:

    猜你喜欢
    • 2013-01-15
    • 1970-01-01
    • 2018-03-11
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    相关资源
    最近更新 更多