View Javadoc

1   package cz.cuni.amis.pogamut.base.server;
2   
3   import java.io.IOException;
4   import java.util.ArrayList;
5   
6   import javax.management.JMX;
7   import javax.management.MBeanServerConnection;
8   import javax.management.ObjectName;
9   import javax.management.remote.JMXConnector;
10  import javax.management.remote.JMXConnectorFactory;
11  import javax.management.remote.JMXServiceURL;
12  
13  import cz.cuni.amis.pogamut.base.agent.IAgent;
14  import cz.cuni.amis.utils.collections.ObservableCollection;
15  import cz.cuni.amis.utils.collections.ObservableList;
16  
17  
18  class AbstractJMXAgentObserver implements IWorldAgentsObserver<IAgent> {
19  
20         
21      protected ObservableCollection<IAgent> agents = 
22              new ObservableList<IAgent>(new ArrayList<IAgent>());
23      /**
24       * Creates JMX wrapper for agent on specified adress and adds it to the list
25       * of all connected agents.
26       * @param serviceUrl URL of the JMX service where remote agent resides eg. service:jmx:rmi:///jndi/rmi://localhost:9999/server
27       * @param objectName name of the MBean representing agent eg. myDomain:name=MyAgent1
28       */
29      protected void addJMXAgentFromAdress(String serviceUrl, ObjectName objectName) throws IOException {
30          JMXServiceURL url = new JMXServiceURL(serviceUrl);
31          JMXConnector jmxc = JMXConnectorFactory.connect(url, null);
32          MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
33          
34          IAgent agent = JMX.newMXBeanProxy(mbsc, objectName, IAgent.class);
35          
36          agents.add(agent);
37      }
38  
39      public ObservableCollection<IAgent> getAgents() {
40              return agents;
41      }
42      
43  }