package org.mobicents.diameter.extension; //import org.jboss.logging.Logger; import org.jboss.msc.service.*; import org.jboss.msc.value.InjectedValue; import org.mobicents.diameter.stack.DiameterStackMultiplexerAS7; import javax.management.MBeanServer; import javax.management.ObjectName; public class DiameterMuxService implements Service<DiameterMuxService> { //private final Logger log = Logger.getLogger(DiameterMuxService.class); public static ServiceName getServiceName() { return ServiceName.of("restcomm","diameter-mux"); } private final InjectedValue<MBeanServer> mbeanServer = new InjectedValue<MBeanServer>(); public InjectedValue<MBeanServer> getMbeanServer() { return mbeanServer; } private DiameterStackMultiplexerAS7 diameterMuxBean; @Override public DiameterMuxService getValue() throws IllegalStateException, IllegalArgumentException { return this; } @Override public void start(StartContext context) throws StartException { //log.info("Starting DiameterMuxService"); diameterMuxBean = new DiameterStackMultiplexerAS7(); //try { //StandardMBean standardMBean = // new StandardMBean(diameterMuxBean, DiameterStackMultiplexerAS7MBean.class); registerMBean(diameterMuxBean, DiameterStackMultiplexerAS7.OBJECT_NAME); //} catch (NotCompliantMBeanException e) { // e.printStackTrace(); //} finally { diameterMuxBean.startService(); //} } @Override public void stop(StopContext context) { //log.info("Stopping DiameterMuxService"); diameterMuxBean.stopService(); unregisterMBean(DiameterStackMultiplexerAS7.OBJECT_NAME); } private void registerMBean(Object mBean, String name) throws StartException { try { getMbeanServer().getValue().registerMBean(mBean, new ObjectName(name)); } catch (Throwable e) { throw new StartException(e); } } private void unregisterMBean(String name) { try { getMbeanServer().getValue().unregisterMBean(new ObjectName(name)); } catch (Throwable e) { //log.error("failed to unregister mbean", e); } } }