On 8/2/06, Jochen Wiedmann <[EMAIL PROTECTED]> wrote:
Following your description, I have written the small test program below.
It works fine for me.
Jochen
As I write before, the server was set to enabled for keapalive. I rewrite
little bit your test to more match my case. And it hasn't stopped.
package sk.sodik.server;
import java.net.URL;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
import org.apache.xmlrpc.server.PropertyHandlerMapping;
import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
import org.apache.xmlrpc.webserver.WebServer;
public class ShutdownTest {
/**
* @param args
*/
public static void main(String[] args) {
try {
new ShutdownTest().testShutdown();
} catch (Exception e) {
e.printStackTrace();
}
}
public static class Adder {
public int add(int p1, int p2) {
return p1 + p2;
}
}
private WebServer setupServer() throws Exception {
WebServer server = new WebServer(0);
PropertyHandlerMapping mapping = new PropertyHandlerMapping();
mapping.addHandler("Adder", Adder.class);
server.getXmlRpcServer().setHandlerMapping(mapping);
XmlRpcServerConfigImpl config = new XmlRpcServerConfigImpl();
config.setEnabledForExtensions(true);
config.setKeepAliveEnabled(true);
server.getXmlRpcServer().setConfig(config);
server.start();
return server;
}
public void testShutdown() throws Exception {
final WebServer server = setupServer();
final int port = server.getPort();
new Thread() {
public void run() {
try {
XmlRpcClient client = new XmlRpcClient();
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL("http://127.0.0.1:" + port
+ "/"));
client.setConfig(config);
for (int i = 0; i < 10; i++) {
Integer result = (Integer) client
.execute("Adder.add", new Object[] {
new Integer(3), new Integer(5) });
System.out.println("Resut:"+result);
Thread.sleep(2000);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
Thread.sleep(5000);
System.out.println("Shuting down...");
server.shutdown();
System.out.println("done");
}
}