1、客户端实现
package com.neohope.xmlrpc.test;
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Vector;
/**
* Created by Hansen
*/
public class TestClient {
public static void main(String[] args) throws MalformedURLException, XmlRpcException {
//设置服务地址
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL("http://localhost:8080/XmlRpcTest"));
//config.setServerURL(new URL("http://localhost:1234/xmlrpc"));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
//调用方法
Vector<String> params1 = new Vector<String>();
params1.addElement("neohope");
String result1 = (String) client.execute("ITest.sayHiTo", params1);
System.out.println(result1);
Vector<Integer> params2 = new Vector<Integer>();
params2.addElement(1);
params2.addElement(2);
int result2 = (int) client.execute("ITest.add", params2);
System.out.println(result2);
}
}
2、服务端接口定义
package com.neohope.xmlrpc.test;
/**
* Created by Hansen
*/
public interface ITest{
/**
* 返回“Hi XXX"字符串,必须声明抛出RemoteException异常
* @return 返回“Hi XXX"字符串
*/
public String sayHiTo(String user);
/**
* 加法,必须声明抛出RemoteException异常
* @param a
* @parma b
* @return a+b
*/
public int add(int a, int b);
}
3、基于WebServer的服务端实现
package com.neohope.xmlrpc.test;
import org.apache.xmlrpc.server.PropertyHandlerMapping;
import org.apache.xmlrpc.server.XmlRpcServer;
import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
import org.apache.xmlrpc.webserver.WebServer;
/**
* Created by Hansen
*/
public class TestServer implements ITest {
/**
* 返回“Hi XXX"字符串
* @return 返回“Hi XXX"字符串
* @throws java.rmi.RemoteException
*/
@Override
public String sayHiTo(String user) {
return "Hi " + user;
}
/**
* 加法
* @param a
* @parma b
* @return a+b
* @throws java.rmi.RemoteException
*/
@Override
public int add(int a, int b) {
return a+b;
}
public static void main(String [] args) throws Exception {
WebServer webServer = new WebServer(1234);
XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();
PropertyHandlerMapping phm = new PropertyHandlerMapping();
phm.addHandler("ITest", TestServer.class);
xmlRpcServer.setHandlerMapping(phm);
XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl)xmlRpcServer.getConfig();
serverConfig.setEnabledForExtensions(true);
serverConfig.setContentLengthOptional(false);
webServer.start();
}
}
4、基于Servlet的服务端实现
package com.neohope.xmlrpc.test;
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.server.PropertyHandlerMapping;
import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
import org.apache.xmlrpc.webserver.XmlRpcServletServer;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Created by Hansen
*/
public class TestServlet extends HttpServlet {
private XmlRpcServletServer rpcserver;
public void init(ServletConfig pConfig) throws ServletException {
super.init(pConfig);
try {
rpcserver = new XmlRpcServletServer();
PropertyHandlerMapping phm = new PropertyHandlerMapping();
phm.addHandler("ITest", TestServer.class);
rpcserver.setHandlerMapping(phm);
XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl)rpcserver.getConfig();
serverConfig.setEnabledForExtensions(true);
serverConfig.setContentLengthOptional(false);
} catch (XmlRpcException ex) {
ex.printStackTrace();
}
}
@Override
public void doPost(HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException, ServletException {
rpcserver.execute(pRequest, pResponse);
}
@Override
public void doGet(HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException, ServletException {
pResponse.getOutputStream().print("It is working.");
}
}
4、基于Servlet的服务端配置
<servlet>
<servlet-name>XmlRpcTest</servlet-name>
<servlet-class>com.neohope.xmlrpc.test.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XmlRpcTest</servlet-name>
<url-pattern>/XmlRpcTest</url-pattern>
</servlet-mapping>