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