ManagementContext.java
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 = (Objectiter.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 }