xmlrpc3.1.3之rmc调用

//server端,可以通过jetty或tomcat配置到servlet

package hust.ning;

import java.io.IOException;

import org.apache.xmlrpc.server.XmlRpcServer;
import org.apache.xmlrpc.webserver.WebServer;

public class RpcServer {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public static void main(String[] args) {
        DefaultXmlRpcHandlerMapping mapping = new DefaultXmlRpcHandlerMapping();
        mapping.addHandler("default", new DefaultXmlRpcHandler());
        mapping.addHandler("s", new SaveHandler());
        mapping.addHandler("t", new TestHandler());
        WebServer server = new WebServer(8889);
        XmlRpcServer xmlServer = server.getXmlRpcServer();
        xmlServer.setHandlerMapping(mapping);
        try {
            server.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

package hust.ning;

import java.util.HashMap;
import java.util.Map;

import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.XmlRpcHandler;
import org.apache.xmlrpc.server.XmlRpcHandlerMapping;
import org.apache.xmlrpc.server.XmlRpcNoSuchHandlerException;

public class DefaultXmlRpcHandlerMapping implements XmlRpcHandlerMapping {

    Map defaultMap = new HashMap();

    public void addHandler(String name, Object obj) {
        if (obj instanceof XmlRpcHandler) {
            defaultMap.put(name, obj);
        }
    }

    @Override
    public XmlRpcHandler getHandler(String name) throws XmlRpcNoSuchHandlerException, XmlRpcException {
        XmlRpcHandler obj = null;
        String s = "";
        int i = name.indexOf(".");
        if (i > -1) {
            s = name.substring(0, i);
            obj = (XmlRpcHandler) defaultMap.get(s);
        }
        if (null == obj) {
            obj = (XmlRpcHandler) defaultMap.get("default");
            if (null == obj) {
                if (i > -1) {
                    throw new XmlRpcNoSuchHandlerException("RPC handler object not found for \"" + s + "\" and no " + "default handler registered .");
                } else {
                    throw new XmlRpcException("No default handler registered .");
                }
            }
        }
        return obj;
    }

}

package hust.ning;

import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.XmlRpcHandler;
import org.apache.xmlrpc.XmlRpcRequest;

class SaveHandler implements XmlRpcHandler {
    
    @Override
    public Object execute(XmlRpcRequest req) throws XmlRpcException {
        System.out.println("method : "+req.getMethodName());
        return "hello";
    }
}

 

package hust.ning;

import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.XmlRpcHandler;
import org.apache.xmlrpc.XmlRpcRequest;

public class TestHandler implements XmlRpcHandler{

    @Override
    public Object execute(XmlRpcRequest req) throws XmlRpcException {
        System.out.println("methodddd : " + req.getMethodName());
        return "bbbbbb";
    }
}

package hust.ning;

import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.XmlRpcHandler;
import org.apache.xmlrpc.XmlRpcRequest;

public class DefaultXmlRpcHandler implements XmlRpcHandler {

    @Override
    public Object execute(XmlRpcRequest req) throws XmlRpcException {
        Object obj = "not.suitable.handler.was.found.for."+req.getMethodName();
        return obj;
    }

}

 

//client

package hust.ning;


import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

public class RpcClient {
    public static void main(String[] args) {
        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
        URL url = null;
        try {
            url = new URL("http://127.0.0.1:8889/xmlrpc");
        } catch (MalformedURLException e1) {
            e1.printStackTrace();
        }
        config.setServerURL(url);
        XmlRpcClient client = new XmlRpcClient();
        client.setConfig(config);
        List list = new ArrayList();
        list.add("luchunli");
        try {
            String result = (String) client.execute("s.sayHello", list);
            System.out.println("result : "+result);
        } catch (XmlRpcException e) {
            e.printStackTrace();
        }
    }
}

 

 

你可能感兴趣的:(java,apache,tomcat,.net,servlet)