如何通过Jolokia服务SpringBoot JMX MBean

时间:2019-03-29 05:02:08

标签: java spring spring-boot jmx jolokia

我问过一个关于将Spring Boot与Jolokia一起使用的问题:How to connect SpringBoot JMX beans with Jolokia?。最初的问题更多是关于使用类名查找特定工件,但是我还有另一个问题,将其更新为该问题,但是我想为此需要一个新问题。

我有一个Spring Boot应用程序。我正在使用@EnableMBeanExport使具有@ManagedResource的bean可用于JMX服务器。在使用VisualVM的简单本地过程中,此方法可以很好地工作。

我现在想提供Jolokia作为这些MBean的接口。我不清楚我需要添加哪些内容。

https://jolokia.org/reference/html/jmx.html上的文档告诉我添加此内容:

MBeanServer jolokiaServer = JolokiaMBeanServerUtil.getJolokiaMBeanServer();

我将其放在这样的@Configuration类中:

@Bean
public MBeanServer jolokiaMBeanServer() {
    return JolokiaMBeanServerUtil.getJolokiaMBeanServer();
}

然后,我按照Jolokia手册中的说明,构造了对REST服务的“ curl”调用,以调用我可以从VisualVM执行的同一JMX方法:

curl 'http://localhost:8080/msapi/actuator/jolokia/exec/JMXDemonstration/assignValueToBeanProperty()/someRandomThing/id/xxx'

此操作失败,并显示以下内容(取消了跟踪):

java.lang.IllegalArgumentException: Invalid object name. Key properties cannot be empty
    at org.jolokia.request.JmxRequestFactory.createGetRequest(JmxRequestFactory.java:99)
    at org.jolokia.http.HttpRequestHandler.handleGetRequest(HttpRequestHandler.java:79)

更新

请注意,我具有以下依赖性(以及其他依赖性):

    <dependency>
        <groupId>org.jolokia</groupId>
        <artifactId>jolokia-core</artifactId>
        <version>1.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.jolokia</groupId>
        <artifactId>jolokia-jmx</artifactId>
        <version>1.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.jolokia</groupId>
        <artifactId>jolokia-spring</artifactId>
        <version>1.6.0</version>
        <exclusions>
            <exclusion>
                <groupId>com.sun</groupId>
                <artifactId>tools</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

我添加了排除项,因为这导致Eclipse无法解析该工件。我认为命令行构建有效,但是在Eclipse中失败了。我不知道将其排除会带来什么影响。

0 个答案:

没有答案