01 package net.sf.annocon.examples.configuration.topdown;
02
03 import java.util.ArrayList;
04 import java.util.Iterator;
05 import java.util.List;
06
07 import javax.management.MBeanServer;
08 import javax.management.MBeanServerFactory;
09 import javax.management.ObjectName;
10 import javax.management.StandardMBean;
11
12 import net.sf.annocon.annotations.Configuration;
13 import net.sf.annocon.annotations.Context;
14 import net.sf.annocon.annotations.Service;
15
16 /**
17 * Creates an mbeanserver and registers mbeans from a configuration
18 *
19 * @author Achim Huegen
20 */
21 @Context(id = "management")
22 public class ManagementContext
23 {
24 @Configuration(id = "MBeans")
25 public List getMBeans()
26 {
27 List result = new ArrayList();
28 return result;
29 }
30
31 @Service(id = "MBeanServer", instantiationModel = "prototype")
32 public MBeanServer getMBeanServer()
33 {
34 MBeanServer mBeanServer = MBeanServerFactory.createMBeanServer();
35
36 int index = 0;
37 for (Iterator iter = getMBeans().iterator(); iter.hasNext();) {
38 Object object = (Object) iter.next();
39 try {
40 // Get the first interface of the object and register
41 // it using a StandardMBean
42 Class managementInterface = object.getClass().getInterfaces()[0];
43 StandardMBean mbean = new StandardMBean(object, managementInterface);
44 mBeanServer.registerMBean(mbean, new ObjectName("annocon", "mbean", "mbean" + index++));
45 } catch (Exception e) {
46 throw new RuntimeException(e);
47 }
48 }
49 return mBeanServer;
50 }
51 }
|