JmxResource, опубликованный с помощью simplejmx, не отображается в JConsole
Я использую simplejmx
опубликовать мой JMX Resources
,
у меня есть jmx-config.xml
<bean id="beanPublisher" class="com.j256.simplejmx.spring.BeanPublisher">
<property name="jmxServer" ref="jmxServer" />
</bean>
<bean id="jmxServer" class="com.j256.simplejmx.server.JmxServer"
init-method="start" destroy-method="stop">
<property name="registryPort" value="8123" />
</bean>
Я начинаю свой JBoss
приложение, все ок:
15:20:11,860 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] (MSC service thread 1-8) Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1be30160: defining beans [...,beanPublisher,jmxServer,...]; root of factory hierarchy
Я создал просто класс.
package com.mypckg.jmx;
import com.j256.simplejmx.common.JmxAttributeField;
import com.j256.simplejmx.common.JmxResource;
@JmxResource(description = "Blah1", domainName = "Blah2", beanName = "Blah3")
public class DummyJMX {
@JmxAttributeField(description = "Blah4")
private int var = 3;
}
Я начинаю JConsole
Я выбираю JBoss
приложение, и я собираюсь MBeans
, Вот что я вижу:
*
Наверное, мой DummyJMX
класс не был опубликован (или я просто не могу его найти).
О каком шаге я забыл?
заранее спасибо
РЕДАКТИРОВАТЬ:
РЕДАКТИРОВАТЬ:
@ Андрей Стефан
Ошибка, которую я получил, используя вашу ссылку:
@Серый
Ошибка, которую я получил, используя localhost:8123
:
3 ответа
Наконец, я связан с моим JMX Beans
с помощью JConsole
,
Возможно, я сделал что-то не так в начале моей работы с simplejmx
,
Я не изменил много вещей. Я продолжал jmx-config
файл, и я до сих пор использую версию 1.8
из simplejmx
,
Я могу легко подключиться к этому бобу locally
- Я понятия не имею, почему я не смог сделать это раньше. Подскажите, почему по вашему мнению это не должно быть local process
?
Ниже вы можете увидеть, что мой JMX Bean
появляется в JConsole
:
Попробуйте следующий URL в JConsole, с опцией Remote Process: service:jmx:rmi:///jndi/rmi://localhost:8123/jmxrmi
Это немного отличается от того, что я предоставил в комментариях.
Возможно, мой класс DummyJMX не был опубликован (или я просто не могу его найти).
Когда вы используете registryPort
конфигурация для JmxServer
тогда он не будет отображаться в списке "Локальный процесс" в Jconsole. Он будет доступен как "Удаленный процесс" с localhost:8123
, Если вы используете Linux, вы можете использовать netstat -an | grep LISTEN
чтобы увидеть, какие порты слушает ваше приложение. Если вы не видите 8123 в списке, возможно, на нем уже настроен сервер RMI?
Если вы хотите использовать платформу mbean-server, которая отображается как локальный процесс, используйте новый установщик или конструктор в версии 1.9, которая была выпущена недавно (4/2014). К сожалению, SimpleJMX не может программно зарегистрироваться, поэтому он отображается в списке процессов - это не тот код, который экспортирует JVM.
<bean id="jmxServer" class="com.j256.simplejmx.server.JmxServer"
init-method="start" destroy-method="stop">
<property name="usePlatformMBeanServer" value="true" />
</bean>