Как обслуживать SpringBoot JMX MBeans через Jolokia - PullRequest
0 голосов
/ 29 марта 2019

Я задал предыдущий вопрос об использовании Spring Boot с Jolokia: Как соединить компоненты SpringBoot JMX с Jolokia? .Этот первоначальный вопрос был больше о поиске конкретного артефакта с именем класса, но у меня была еще одна проблема, к которой я обновил вопрос, но, думаю, мне нужен новый вопрос для этого.

У меня есть Spring Bootприложение.Я использую @EnableMBeanExport, чтобы мои бины с @ManagedResource были доступны для сервера JMX.Это прекрасно работает в простых локальных процессах с VisualVM.

Теперь я хочу предоставить Jolokia в качестве интерфейса для этих MBeans.Мне не совсем ясно, какие части мне нужно добавить.

Документ в https://jolokia.org/reference/html/jmx.html говорит мне добавить это:

MBeanServer jolokiaServer = JolokiaMBeanServerUtil.getJolokiaMBeanServer();

Я поместил это в @ConfigurationКласс, подобный этому:

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

Затем я создал вызов curl для службы REST, чтобы вызвать тот же метод JMX, который мне удалось выполнить из VisualVM, следуя инструкциям в руководстве по Jolokia:

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 не получилось.Я не знаю, каков будет результат исключения этого.

...