]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/JmxExecutionModulesListeners.java
ExcecutionScopeDecorator: change default to proxy interfaces
[gpl/argeo-slc.git] / runtime / org.argeo.slc.core / src / main / java / org / argeo / slc / core / execution / JmxExecutionModulesListeners.java
1 package org.argeo.slc.core.execution;
2
3 import java.lang.management.ManagementFactory;
4
5 import javax.management.MBeanServer;
6 import javax.management.ObjectName;
7 import javax.management.StandardMBean;
8
9 import org.argeo.slc.SlcException;
10 import org.argeo.slc.deploy.Module;
11 import org.argeo.slc.execution.ExecutionContext;
12 import org.argeo.slc.execution.ExecutionFlow;
13 import org.argeo.slc.execution.ExecutionModulesListener;
14
15 public class JmxExecutionModulesListeners implements ExecutionModulesListener {
16 private String executionModulesPrefix = "SLCExecutionModules";
17 private MBeanServer mBeanServer = ManagementFactory
18 .getPlatformMBeanServer();
19
20 public void executionModuleAdded(Module module,
21 ExecutionContext executionContext) {
22 }
23
24 public void executionModuleRemoved(Module module,
25 ExecutionContext executionContext) {
26 }
27
28 public void executionFlowAdded(Module module, ExecutionFlow executionFlow) {
29 try {
30 StandardMBean mbean = new StandardMBean(executionFlow,
31 ExecutionFlow.class);
32 mBeanServer.registerMBean(mbean, flowName(module, executionFlow));
33 } catch (Exception e) {
34 String msg = "Cannot register execution flow " + executionFlow
35 + " as mbean";
36 throw new SlcException(msg, e);
37 }
38 }
39
40 public void executionFlowRemoved(Module module, ExecutionFlow executionFlow) {
41 try {
42 mBeanServer.unregisterMBean(flowName(module, executionFlow));
43 } catch (Exception e) {
44 String msg = "Cannot unregister execution flow " + executionFlow
45 + " as mbean";
46 throw new SlcException(msg, e);
47 }
48 }
49
50 protected ObjectName flowName(Module module, ExecutionFlow executionFlow) {
51 String path = executionFlow.getPath();
52 String name = executionModulesPrefix + ":" + "module="
53 + module.getName() + "[" + module.getVersion() + "],"
54 + (path != null ? "path=" + path + "," : "") + "name="
55 + executionFlow.getName();
56 try {
57 return new ObjectName(name);
58 } catch (Exception e) {
59 throw new SlcException("Cannot generate object name based on "
60 + name, e);
61 }
62 }
63 }