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");
}

}

Reply via email to