X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fdolda%2Fjsvc%2Fscgi%2FDirServer.java;h=209d1a4f145237fa0c6c6861051df5b75a27efe5;hb=f12fa57b8c0c5aef786a0111fd78cdb61dde9595;hp=1ac452c8139bfcc010ccebc368ca4d65d5c0e897;hpb=48d0e295cb79948858eb5aa99cc08cdf9f9e4546;p=jsvc.git diff --git a/src/dolda/jsvc/scgi/DirServer.java b/src/dolda/jsvc/scgi/DirServer.java index 1ac452c..209d1a4 100644 --- a/src/dolda/jsvc/scgi/DirServer.java +++ b/src/dolda/jsvc/scgi/DirServer.java @@ -7,10 +7,12 @@ import java.util.logging.*; import dolda.jsvc.*; import dolda.jsvc.util.*; import dolda.jsvc.j2ee.PosixArgs; +import java.lang.management.ManagementFactory; +import javax.management.*; public class DirServer extends Server { private final Map contexts = new HashMap(); - private final Environment env; + public final Environment env; private final Logger logger = Logger.getLogger("dolda.jsvc.scgi.dirserver"); private Thread sdhook = null, main = null; @@ -26,6 +28,11 @@ public class DirServer extends Server { if(ctx != null) { if(ctx.mtime < file.lastModified()) { ctx.tg.shutdown(); + try { + ManagementFactory.getPlatformMBeanServer().unregisterMBean(ctx.mbean.name); + } catch(InstanceNotFoundException e) { + } catch(MBeanRegistrationException e) { + } contexts.remove(file); ctx = null; act = "reloaded %s as %s"; @@ -33,6 +40,12 @@ public class DirServer extends Server { } if(ctx == null) { ctx = new DSContext(file, env); + try { + ManagementFactory.getPlatformMBeanServer().registerMBean(ctx.mbean, ctx.mbean.name); + } catch(InstanceAlreadyExistsException e) { + } catch(MBeanRegistrationException e) { + } catch(NotCompliantMBeanException e) { + } contexts.put(file, ctx); logger.config(String.format(act, file, ctx.name())); } @@ -77,6 +90,11 @@ public class DirServer extends Server { } } super.shutdown(); + try { + ManagementFactory.getPlatformMBeanServer().unregisterMBean(dolda.jsvc.scgi.jmx.Server.name); + } catch(InstanceNotFoundException e) { + } catch(MBeanRegistrationException e) { + } } private static void usage(PrintStream out) { @@ -84,7 +102,7 @@ public class DirServer extends Server { } public static void main(String[] args) { - PosixArgs opt = PosixArgs.getopt(args, "h"); + PosixArgs opt = PosixArgs.getopt(args, "he:d:"); if(opt == null) { usage(System.err); System.exit(1); @@ -124,6 +142,12 @@ public class DirServer extends Server { return; /* Because javac is stupid. :-/ */ } DirServer s = new DirServer(sk, env); + try { + ManagementFactory.getPlatformMBeanServer().registerMBean(new dolda.jsvc.scgi.jmx.Server(s), dolda.jsvc.scgi.jmx.Server.name); + } catch(InstanceAlreadyExistsException e) { + } catch(MBeanRegistrationException e) { + } catch(NotCompliantMBeanException e) { + } if(charset != null) s.headcs = charset;