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
25
26
27
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 }