epugh 2004/01/09 06:03:48 Modified: xmlrpc/xdocs changes.xml xmlrpc/src/java/org/apache/fulcrum/xmlrpc DefaultXmlRpcServerComponent.java xmlrpc/src/test/org/apache/fulcrum/xmlrpc XmlRpcComponentTest.java Log: Patch from Ronald to unregister component handlers when dispose() method is called. Revision Changes Path 1.3 +3 -0 jakarta-turbine-fulcrum/xmlrpc/xdocs/changes.xml Index: changes.xml =================================================================== RCS file: /home/cvs/jakarta-turbine-fulcrum/xmlrpc/xdocs/changes.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- changes.xml 24 Dec 2003 14:14:35 -0000 1.2 +++ changes.xml 9 Jan 2004 14:03:48 -0000 1.3 @@ -8,6 +8,9 @@ <body> <release version="Not applicable" date=""> + <action dev="ronald" type="fix"> + Change Server component to unregister handlers on dispose() method. Prevents shutdown errors. + </action> <action dev="ronald" type="add"> Add merlin meta info generation. Refactor common code between server and client. 1.2 +19 -4 jakarta-turbine-fulcrum/xmlrpc/src/java/org/apache/fulcrum/xmlrpc/DefaultXmlRpcServerComponent.java Index: DefaultXmlRpcServerComponent.java =================================================================== RCS file: /home/cvs/jakarta-turbine-fulcrum/xmlrpc/src/java/org/apache/fulcrum/xmlrpc/DefaultXmlRpcServerComponent.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DefaultXmlRpcServerComponent.java 24 Dec 2003 14:14:35 -0000 1.1 +++ DefaultXmlRpcServerComponent.java 9 Jan 2004 14:03:48 -0000 1.2 @@ -60,7 +60,6 @@ import org.apache.avalon.framework.activity.Startable; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.ConfigurationException; -import org.apache.avalon.framework.logger.AbstractLogEnabled; import org.apache.avalon.framework.service.ServiceException; import org.apache.avalon.framework.service.ServiceManager; import org.apache.avalon.framework.service.Serviceable; @@ -173,6 +172,7 @@ public void start() throws Exception { + getLogger().debug( "Starting the XML-RPC server." ); webserver.start(); } @@ -184,7 +184,7 @@ { super.initialize(); - getLogger().info( "Attempting to start the XML-RPC server." ); + getLogger().info( "Attempting to initialize the XML-RPC server." ); // Need a default value here. if (isSecureServer) @@ -277,9 +277,14 @@ } } + /** + * Shuts down this service, stopping running threads. + */ public void stop() throws Exception { + getLogger().debug( "Stopping the XML-RPC server." ); + // Stop the XML RPC server. org.apache.xmlrpc.WebServer blocks in a // call to ServerSocket.accept() until a socket connection is made. webserver.shutdown(); @@ -302,10 +307,20 @@ // ------------------------------------------------------------------------ /** - * Shuts down this service, stopping running threads. + * Unregisters all handlers and disposes of the server. */ public void dispose() { + Configuration[] handlers = handlerConfiguration.getChildren("handler"); + for (int i = 0; i < handlers.length; i++) + { + Configuration c = handlers[i]; + if (c.getName().equals("handler")) + { + unregisterHandler(c.getChild("name").getValue("")); + } + } + webserver = null; } 1.5 +7 -1 jakarta-turbine-fulcrum/xmlrpc/src/test/org/apache/fulcrum/xmlrpc/XmlRpcComponentTest.java Index: XmlRpcComponentTest.java =================================================================== RCS file: /home/cvs/jakarta-turbine-fulcrum/xmlrpc/src/test/org/apache/fulcrum/xmlrpc/XmlRpcComponentTest.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- XmlRpcComponentTest.java 24 Dec 2003 14:14:35 -0000 1.4 +++ XmlRpcComponentTest.java 9 Jan 2004 14:03:48 -0000 1.5 @@ -4,6 +4,7 @@ import java.util.Vector; import org.apache.fulcrum.testcontainer.BaseUnitTest; +import org.apache.avalon.framework.component.Component; import org.apache.avalon.framework.component.ComponentException; import junit.framework.TestSuite; @@ -54,6 +55,8 @@ e.printStackTrace(); fail("Could not lookup component"); } + + release((Component) xmlrpc); } public void testHandler() throws Exception @@ -97,5 +100,8 @@ result = (String) rpcClient.executeRpc(server, "ClassHandler.echo", params); assertEquals(result, testMessage); + + release((Component) rpcClient); + release((Component) xmlrpc); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]