1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package ch.elca.el4j.tests.services.monitoring.jmx;
19
20 import static org.junit.Assert.assertEquals;
21 import static org.junit.Assert.assertTrue;
22
23 import javax.management.MBeanServer;
24 import javax.management.MalformedObjectNameException;
25 import javax.management.ObjectName;
26
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29 import org.junit.Test;
30 import org.springframework.context.ConfigurableApplicationContext;
31 import org.springframework.context.support.ClassPathXmlApplicationContext;
32
33 import ch.elca.el4j.core.context.ModuleApplicationContext;
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 public class JmxTest {
56
57
58
59
60 private static Logger s_logger = LoggerFactory.getLogger(JmxTest.class);
61
62
63
64
65 String m_mandatoryFiles = "classpath*:mandatory/*.xml";
66
67
68
69
70 String m_fileName1 = "classpath:optional/beans1.xml";
71
72
73
74
75 String m_fileName2 = "classpath:optional/beans2.xml";
76
77
78
79
80 String m_fileName3 = "classpath:optional/beans3.xml";
81
82
83
84
85 String m_fileName4 = "classpath:optional/beans4.xml";
86
87
88
89
90
91
92
93
94
95
96 @Test
97 public void testRegisteredMBeanWithTwoAppCxtsAndOneJmxInstance()
98 throws MalformedObjectNameException {
99
100 ConfigurableApplicationContext tac1
101 = new ClassPathXmlApplicationContext(
102 new String[] {m_mandatoryFiles, m_fileName1});
103
104 ConfigurableApplicationContext tac2
105 = new ModuleApplicationContext(new String[] {
106 m_mandatoryFiles, m_fileName2}, false);
107
108 ObjectName on1 = new ObjectName("MBean:name=foo1");
109 ObjectName on2 = new ObjectName("MBean:name=foo2");
110 ObjectName on3 = new ObjectName("SpringBean1:name=mBeanExporter");
111 ObjectName on4 = new ObjectName("SpringBean2:name=foo2");
112
113 MBeanServer mBeanServer1 = (MBeanServer) tac1.getBean("mBeanServer");
114
115 MBeanServer mBeanServer2 = (MBeanServer) tac2.getBean("mBeanServer");
116
117 assertEquals("The two MBean Servers in the two Application Contexts "
118 + "should be the same.", mBeanServer1, mBeanServer2);
119
120 assertTrue("MBean with object name 'MBean:name=foo1' is not "
121 + "registered at the MBean Server", mBeanServer1.isRegistered(on1));
122
123 assertTrue("MBean with object name 'MBean:name=foo2' is not "
124 + "registered at the MBean Server", mBeanServer1.isRegistered(on2));
125
126 assertTrue("MBean with object name 'SpringBean1:name=mBeanExporter1' "
127 + "is not registered at the MBean Server", mBeanServer1
128 .isRegistered(on3));
129
130 assertTrue("MBean with object name 'SpringBean2:name=foo2' is not "
131 + "registered at the MBean Server", mBeanServer1.isRegistered(on4));
132
133
134 tac1.close();
135 tac2.close();
136 }
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151 @Test
152 public void testRegisteredMBeanWithTwoAppCxtsAndTwoMBeanServers()
153 throws MalformedObjectNameException {
154
155 ConfigurableApplicationContext tac1
156 = new ClassPathXmlApplicationContext(
157 new String[] {m_mandatoryFiles, m_fileName3});
158
159 ConfigurableApplicationContext tac2
160 = new ClassPathXmlApplicationContext(
161 new String[] {m_mandatoryFiles, m_fileName4});
162
163 ObjectName on1 = new ObjectName("MBean:name=foo3");
164 ObjectName on2 = new ObjectName("MBean:name=foo4");
165 ObjectName on3 = new ObjectName("SpringBean3:name=mBeanExporter");
166 ObjectName on4 = new ObjectName("SpringBean4:name=foo4");
167
168 MBeanServer mBeanServer1 = (MBeanServer) tac1.getBean("mBeanServer");
169
170 MBeanServer mBeanServer2 = (MBeanServer) tac2.getBean("mBeanServer");
171
172 assertTrue("MBean with object name 'MBean:name=foo3' is not "
173 + "registered at the MBean Server 1", mBeanServer1
174 .isRegistered(on1));
175
176 assertTrue("MBean with object name 'MBean:name=foo4' is not "
177 + "registered at the MBean Server 2", mBeanServer2
178 .isRegistered(on2));
179
180 assertTrue("MBean with object name 'SpringBean3:name=mBeanExporter3' "
181 + "is not registered at the MBean Server 1", mBeanServer1
182 .isRegistered(on3));
183
184 assertTrue("MBean with object name 'SpringBean4:name=foo4' is not "
185 + "registered at the MBean Server 2", mBeanServer2
186 .isRegistered(on4));
187
188 s_logger.info("see source file to run it in non-stopping mode.");
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203 tac1.close();
204 tac2.close();
205 }
206 }