我使用JMX在Spring應用程序和XML配置:帶有Spring配置的JMX,基於100%註解?
<bean id="jmxExporter" class="org.springframework.jmx.export.MBeanExporter">
<property name="beans">
<map>
<entry key="bean:name=bean1" value-ref="bean1"/>
<entry key="bean:name=bean2" value-ref="bean2"/>
<entry key="bean:name=bean3" value-ref="bean3"/>
</map>
</property>
<property name="notificationListenerMappings">
<map>
<entry key="*">
<bean class="com.test.listener"/>
</entry>
</map>
</property>
</bean>
<bean id="registry" class="org.springframework.remoting.rmi.RmiRegistryFactoryBean">
<property name="port" value="1099" />
</bean>
<bean id="serverConnector"
class="org.springframework.jmx.support.ConnectorServerFactoryBean">
<property name="objectName" value="connector:name=rmi" />
<property name="serviceUrl"
value="service:jmx:rmi://localhost/jndi/rmi://localhost:1099/jmxrmi" />
</bean>
我從喜歡的,而不是這個XML配置,我們可以用@EnableMBeanExport
標註它的各種文件理解和@ManagedResource
的豆類。
,但我懷疑是如何ConnectorServerFactoryBean
得到這些註釋進行配置。還是有任何註釋可用於配置RMI
和connectorServerFactoryBean
?
此外,我需要知道如何註釋,配置notificationListenerMappings
?
P.S: 我的代碼工作下的XML配置出版商和監聽。我打算在註解中完全移動它,因爲我不想在PROD中干擾XML配置。
編輯
發現下面這段代碼:規劃來試試吧:
@Bean
public RmiRegistryFactoryBean registry() {
return new RmiRegistryFactoryBean();
}
@Bean
@DependsOn("registry")
public ConnectorServerFactoryBean connectorServer() throws MalformedObjectNameException {
ConnectorServerFactoryBean connectorServerFactoryBean = new ConnectorServerFactoryBean();
connectorServerFactoryBean.setObjectName("connector:name=rmi");
connectorServerFactoryBean.setServiceUrl("service:jmx:rmi://localhost/jndi/rmi://localhost:1099/connector");
return connectorServerFactoryBean;
}
編輯2: 我繼續在上面提到的方法,我能夠配置的MBean並能夠發佈通知。但不幸的是,我堅持通過Annotation來配置NotificationListener。
我嘗試添加以下內容:
@Bean
@DependsOn("registry")
public ConnectorServerFactoryBean connectorServer() throws MalformedObjectNameException {
ConnectorServerFactoryBean connectorServerFactoryBean = new ConnectorServerFactoryBean();
connectorServerFactoryBean.setObjectName("connector:name=rmi");
connectorServerFactoryBean.setServiceUrl("service:jmx:rmi://localhost/jndi/rmi://localhost:1099/connector");
//TestListener is my NotificationListener class
ObjectName objectName = new ObjectName("bean:name=bean1");
connectorServerFactoryBean.getServer().addNotificationListener(objectName,
new TestListener(), null,null);
return connectorServerFactoryBean;
}
我越來越InstanceNotFoundException的說明bean:name=bean1
沒有找到。但我在bean1
上配置了像@ManagedResource(objectName="bean:name=bean1")
。
對我缺少什麼任何幫助嗎?
謝謝@熱雷米B.威爾說,「服務器」真正地在我的問題無論在serviceConnector豆配置配置? – DecKno
理論上是的。它尋找一個MBeanServer實例 –
確定後,在您提供的鏈接,MBean服務器,如何春季知道哪些類有方法通過JMX打電話?在課堂上有「@ ManagedResource」和「@ ManagedOperation」就夠了嗎? –