ここで何度も質問されていることは承知していますが、私の問題を解決できませんでした。POJO を JMX Bean として公開するための基本的な例をセットアップし、それを JConsole で表示したいと考えています。Spring Docsに従っているので、なぜこれが機能しないのかわかりません。
私のコードは
package org.springframework.jmx;
public interface IJmxTestBean {
public int getAge();
public void setAge(int age);
public void setName(String name);
public String getName();
public int add(int x, int y);
public void dontExposeMe();
}
と
package org.springframework.jmx;
public class JmxTestBean implements IJmxTestBean {
private String name;
private int age;
private boolean isSuperman;
//getters and setters for each
}
と
package org.springframework.jmx;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Program {
public static void main(String[] args) throws InterruptedException {
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
context.getBean(JmxTestBean.class);
Thread.sleep(Long.MAX_VALUE);
}
}
と
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean"/>
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
<property name="beans">
<map>
<entry key="bean:name=testBean1" value-ref="testBean"/>
</map>
</property>
<property name="server" ref="mbeanServer"/>
<property name="autodetect" value="true"/>
</bean>
<bean id="testBean" class="org.springframework.jmx.JmxTestBean">
<property name="name" value="TEST"/>
<property name="age" value="100"/>
</bean>
</beans>
私が試した同様の質問への回答による<context:mbean-server/>
と<context:mbean-export/>
、これらは解決しませんでした。
メインメソッドのコードに関連していますか? 私は...の有無にかかわらず試しましたcontext.getBean(...)
...
編集SpringのログにはINFO: Located managed bean 'bean:name=testBean1': registering with JMX server as MBean [bean:name=testBean1]
、MBeanが表示されないことを除いて、JConsoleのプロセスに接続できると書かれています。
編集#2ロギングを有効にした後、私は見ることができますMBeanExporter:651 - Located managed bean 'bean:name=testBean1': registering with JMX server as MBean [bean:name=testBean1]