我们在提供远程接口时可以使用webservice的方式,使用xmlrpc同样也可以实现,并且开发简单。实现的方式有许多种,以下采用httpservlet的方式实现
需要使用到的jar包:xercesImpl.jar xmlrpc-2.0.1.jar commons-codec_1.3.jar 见附件
1、写个接口实现类
import java.io.IOException;
public class ServerDemo {
//验证登陆
public byte[] checkLogin(byte[] username,byte[] password){
if(new String(username).equals("allen")&&new String(password).equals("123456")){
return "登陆成功".getBytes();
}else
{
return "登陆失败".getBytes();
}
}
}
2、写个初始化的servlet
package com.xml.rpc.server;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.xmlrpc.XmlRpcServer;
public class XrpcProxyServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
private XmlRpcServer xmlrpc = new XmlRpcServer();
public XrpcProxyServlet() {
}
public void init() throws ServletException {
xmlrpc.addHandler("xmlrpcOrder", new ServerDemo());
xmlrpc.setMaxThreads(30);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
byte[] result = xmlrpc.execute(request.getInputStream());
response.setContentType("text/xml");
response.setContentLength(result.length);
OutputStream out = response.getOutputStream();
out.write(result);
out.flush();
out.close();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
3、在web.xml中配置这个servlet
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.xml.rpc.server.XrpcProxyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/xmlrpc</url-pattern>
</servlet-mapping>
以上服务端的代码完成,下面是客户端调用的实现:
XmlRpc.setDriver("org.apache.xerces.parsers.SAXParser");
XmlRpcClient client = new XmlRpcClient("http://localhost:8080/XmlRpc/xmlrpc");
Vector params = new Vector();
params.addElement("allen".getBytes());
params.addElement("123456".getBytes());
username.setText("----alen");
byte[] flag=(byte[])client.execute("xmlrpcOrder.checkLogin",params);
System.out.println("-----调用成功");
-----------------------------------------------------------------
以上实现类的创建方式采用new的方式,若采用spring框架也可以采用注入的方式,
上次用spring的mvc框架实现,实现方式这里也贴一下,在Controller中:
@Controller
public class XmlrpcController extends AbstractController implements InitializingBean {
@Autowired
private OrderService orderService;
XmlRpcServer server=null;
@RequestMapping("/xmlprc.action")
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
byte[] resp = server.execute(request.getInputStream());
response.getOutputStream().write(resp);
return null;
}
public void afterPropertiesSet() throws Exception {
server= new XmlRpcServer();
server.addHandler("xmlrpcOrder", orderService);
}
}
xmlrpc还是比较好用的,同样在其他语言中也有实现,但是在参数的传输方面比较弱这点需要注意,在android应用开发中同样也可以使用,使用方式和上面的完全一致。
分享到:
相关推荐
xmlrpc-2.0-src.zip java程序,主要用语开发rpc
Java通过xmlrpc实现远程方法调用,如需xmlrpc可在网上下载。
java xmlrpc开发的框架包。 java xmlrpc开发的框架包。 java xmlrpc开发的框架包。
基于 RPC 方式的文件传输应用开发: 实现一个简单的RPC分布应用,实现一个基于RPC 方式的文件传输应用。 功能: 1. 能够查询服务器端文件列表及文件信息; 2. 能够传输大文件,并且分片的方式进行传输。
static String serverUrl = "http://192.168.1.6:81/phacoa/xmlrpc"; static String usr = ""//帐号 static String pwd = ""; //密码 public static <JSONObject> Object RPC(String methodName, List<String> L...
入门级XMLRPC工程(Java).rar 是个入门级的rpc应用 里面有简单说明,不明白在站内发信息
网上一直没有JAVA XMLRPC与SPRING的完整整合,我这个工程是完整的,利用Maven技术,整合好依赖jar包,直接可以执行!和大家分享下!
用于java RPC编程的相关包xmlrpc-server-3.1.3.jar
xmlrpc jar包. 版本: 3.1.3
xmlrpc.jar文件,Java调用xmlrpc时需要此jar包
java xmlrpc 所需jar 3.1.3
java相关项目apache XMLRPC3.1.3版本的源码
xmlrpc的apache的java实现。 最新版本3.1.1的源码,包括commons server client三个模块。
xmlrpc技术在分布式系统中有着较广泛的应用,它基于HTTP协议实现远程过程调用,本资源详细描述了xmlrpc的基本使用,适合给初学者提供一些帮助。
atlassian-xmlrpc-binder-support-0.7.jar
什么是 XMLRPC? aXMLRPC 是一个带有轻量级 XML-RPC 客户端的 ... 如果您自己使用 git,则可以使用子模块将代码作为模块包含到您的模块中。 因此,您将始终了解图书馆的最新情况。 将其编译为库 该库本身是一个 NetBe
使用Spring+Hibernate实现XmlRpc项目, 本项目是实现呼叫系统, 源码在classes中, 测试客服端为SuperCallClient.java
#Wordpress XML-RPC Class 这个类使得在 Wordpress 中发布 XML-RPC 变得容易。 ## 用法 本示例中的$data是对应于的struct content的变量。 require_once('wp.xmlrpc.php');$host = 'hogehoge.net';$user = 'admin';$...
XMLRPCClient rpc = new XMLRPCClient("http://192.168.1.6:81/xmlrpc"); try { System.out.println(1111); Object o = rpc.call("test"); System.out.println(o); System.out.println(2222); } catch ...