DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15099>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15099 MX4JSystemManager.java Summary: MX4JSystemManager.java Product: Avalon Version: unspecified Platform: All OS/Version: All Status: NEW Severity: Minor Priority: Other Component: Phoenix AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] in MX4JSystemManager.java's initialize(), there is a call for MBeanServer.invoke to start mx4j's HTTP adapter and RMI adapter, but there is no such call to stop these adapters. so when CLIMain is called by service warpper, such as DaemonLauncher.java, and if there is no System.exit() after stop the Embeddor, the execution will not stop because the adapter thread is still run. I modified MX4JSystemManager a little bit. below is modified part of it public void initialize() throws Exception { super.initialize(); } public void start() throws Exception { super.start(); final MBeanServer server = getMBeanServer(); startHttpAdaptor(server); if (m_rmi) startRMIAdaptor(server); } public void stop() throws Exception { super.stop(); // stop the server final MBeanServer server = getMBeanServer(); stopHttpAdaptor(server); if (m_rmi) stopRMIAdaptor(server); } private void startHttpAdaptor(final MBeanServer server) throws Exception { final ObjectName adaptorName = new ObjectName("Http:name=HttpAdaptor"); server.createMBean("mx4j.adaptor.http.HttpAdaptor", adaptorName, null); server.setAttribute(adaptorName, new Attribute("Host", m_host)); server.setAttribute(adaptorName, new Attribute("Port", new Integer (m_port))); configureProcessor(server, adaptorName); if (m_username != null) configureAuthentication(server, adaptorName); server.invoke(adaptorName, "start", null, null); getLogger().debug("MX4J HTTP listener port: " + m_port); } private void startRMIAdaptor(final MBeanServer server) throws Exception { System.setProperty("java.naming.factory.initial", m_namingFactory); // Create and start the naming service final ObjectName naming = new ObjectName("Naming:type=rmiregistry"); server.createMBean("mx4j.tools.naming.NamingService", naming, null); server.invoke(naming, "start", null, null); // Create the JRMP adaptor final ObjectName adaptor = new ObjectName("Adaptor:protocol=JRMP"); server.createMBean("mx4j.adaptor.rmi.jrmp.JRMPAdaptor", adaptor, null); JRMPAdaptorMBean mbean = (JRMPAdaptorMBean) StandardMBeanProxy.create (JRMPAdaptorMBean.class, server, adaptor); // Set the JNDI name with which will be registered mbean.setJNDIName("jrmp"); // Register the JRMP adaptor in JNDI and start it mbean.start(); } private void stopHttpAdaptor(final MBeanServer server) throws Exception { // stop the HTTP adaptor final ObjectName adaptorName = new ObjectName("Http:name=HttpAdaptor"); server.invoke(adaptorName, "stop", null, null); } private void stopRMIAdaptor(final MBeanServer server) throws Exception { // stop the JRMP adaptor final ObjectName adaptor = new ObjectName("Adaptor:protocol=JRMP"); server.invoke(adaptor, "stop", null, null); // stop the naming service final ObjectName naming = new ObjectName("Naming:type=rmiregistry"); server.invoke(naming, "stop", null, null); } private void configureProcessor(final MBeanServer server, final ObjectName adaptorName) throws Exception { final ObjectName processorName = new ObjectName ("Http:name=XSLTProcessor"); server.createMBean("mx4j.adaptor.http.XSLTProcessor", processorName, null); server.setAttribute(adaptorName, new Attribute("ProcessorName", processorName)); server.setAttribute(processorName, new Attribute("UseCache", Boolean.FALSE)); if (m_stylesheetDir != null) server.setAttribute(processorName, new Attribute("File", m_stylesheetDir)); } private void configureAuthentication(final MBeanServer server, final ObjectName adaptorName) throws InstanceNotFoundException, MBeanException, ReflectionException, AttributeNotFoundException, InvalidAttributeValueException { // add user names server.invoke(adaptorName, "addAuthorization", new Object[]{m_username, m_password}, new String[]{"java.lang.String", "java.lang.String"}); // use basic authentication server.setAttribute(adaptorName, new Attribute ("AuthenticationMethod", "basic")); } -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
