INT-1449: ensure mbeans only registered once for factory bean product

This commit is contained in:
Dave Syer
2010-10-06 10:25:58 -07:00
parent 1d44c8af2c
commit 84415d6f53
4 changed files with 57 additions and 50 deletions

View File

@@ -23,8 +23,6 @@ import javax.management.ObjectName;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.integration.monitor.IntegrationMBeanExporter;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -37,16 +35,13 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
public class PollingAdapterMBeanTests {
@Autowired
private ApplicationContext context;
private MBeanServer server;
@Test
public void testMBeanExporterExists() throws Exception {
IntegrationMBeanExporter exporter = this.context.getBean(IntegrationMBeanExporter.class);
MBeanServer server = this.context.getBean("mbs", MBeanServer.class);
assertEquals(server, exporter.getServer());
public void testMessageSourceMBeanExists() throws Exception {
// System.err.println(server.queryNames(new ObjectName("*:type=MessageSource,*"), null));
Set<ObjectName> names = server.queryNames(new ObjectName("spring.application:type=MessageSource,*"), null);
assertEquals(1, names.size());
exporter.destroy();
}
public static class Source {

View File

@@ -25,6 +25,6 @@
</int:payload-type-router>
<jmx:mbean-export id="mbeanExporter" server="mbs"
domain="tests.MBeanExpoerterParser" />
domain="tests.RouterMBean" />
</beans>

View File

@@ -15,13 +15,14 @@ package org.springframework.integration.jmx.config;
import static org.junit.Assert.assertEquals;
import java.util.Set;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.integration.monitor.IntegrationMBeanExporter;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -34,14 +35,19 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
public class RouterMBeanTests {
@Autowired
private ApplicationContext context;
private MBeanServer server;
@Test
public void testRouterMBeanExists() throws Exception {
Set<ObjectName> names = server.queryNames(new ObjectName("*:type=MessageHandler,name=ptRouter,*"), null);
assertEquals(1, names.size());
}
@Test
public void testMBeanExporterExists() throws InterruptedException {
IntegrationMBeanExporter exporter = this.context.getBean(IntegrationMBeanExporter.class);
MBeanServer server = this.context.getBean("mbs", MBeanServer.class);
assertEquals(server, exporter.getServer());
exporter.destroy();
public void testRouterMBeanOnlyRegisteredOnce() throws Exception {
// System.err.println(server.queryNames(new ObjectName("*:type=MessageHandler,*"), null));
// The errorLogger and the router
assertEquals(2, server.queryNames(new ObjectName("*:type=MessageHandler,*"), null).size());
}
}