使用 xml-rpc 远程调用

原创 2004年08月14日 14:49:00

xml-rpc可以看做是web service的简化版,他们的区别是soap可以传复杂的对象,而xml-rpc调用只能传简单的类型,如string,int,double,boolean,byte[],
string[].

xml-rpc调用简单,尤其和ejb远程调用相比,ejb远程调用,客户端必须用服务器的home/remote接口文件。而且文件必须和服务器的完全一致,否则就会出错,所以当接口变动或者接口加减方法的时候,变得非常的麻烦,因为我的ejb远程调用应用的充值计费的关键业务上,所以我一般很少在原来的ejb接口上做改动,如果放上新接口,而远程调用因为版本的不一致,而出现错误,那就很糟糕,即使能在半个小时内解决,也会造成不小的损失,而且公司不能答应半个小时暂停业务。所以我现在一般用web service或者xml-rpc,因为客户端不需要依赖服务器的接口文件,所以不会造成客户端和服务器端的调用接口不一致错误。

xml-rpc是基于http协议的post方法的,传送的数据是用xml编码。xml-rpc调用分为客户端和服务器端,服务器端可以创建一个小的webserver,也可以用你正在用的webserver如tomcat.下面是服务器的代码:
  public void init() throws ServletException {
    XmlRpcServer xmlrpc = new XmlRpcServer();
    xmlrpc.addHandler ("hello", new HelloHandle());
  }

 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    XmlRpcServer xmlrpc = new XmlRpcServer();
    xmlrpc.addHandler ("hello", new HelloHandle());
    byte[] result = xmlrpc.execute (request.getInputStream ());
    response.setContentType ("text/xml");
    OutputStream out = response.getOutputStream();
    out.write (result);
    out.flush ();
  }
public class HelloHandle {
  public String sayHello(String name)
  {
         String str = "Hello " + name;
         System.out.println(str);
         return str;
     }
}

客户端代码:
       XmlRpc.setDriver("org.apache.xerces.parsers.SAXParser");          
       XmlRpcClient client = new XmlRpcClient("http://192.168.11.177:8080/xmlRpc");

           Vector params = new Vector();
           params.addElement("hi everyone!");
           String result = (String)client.execute("hello.sayHello",params);

需要的包:xmlrpc-1.2-b1.jar         xerces.jar
去xml-rpc站点下载一下

 

【远程调用框架】如何实现一个简单的RPC框架(二)实现与使用

【如何实现一个简单的RPC框架】系列文章:【远程调用框架】如何实现一个简单的RPC框架(一)想法与设计 【远程调用框架】如何实现一个简单的RPC框架(二)实现与使用 【远程调用框架】如何实现一个简...
  • u013177446
  • u013177446
  • 2017年03月28日 16:08
  • 2954

RPC(远程过程调用)简介

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。之前听过这个名词,但是也只是大概...
  • jiange_zh
  • jiange_zh
  • 2016年06月28日 00:00
  • 1487

轻松搞定RabbitMQ(七)——远程过程调用RPC

翻译:http://www.rabbitmq.com/tutorials/tutorial-six-java.html 在第二篇博文中,我们已经了解到了如何使用工作队列来向多个消费者分散耗时任务。 但...
  • xiaoxian8023
  • xiaoxian8023
  • 2015年09月30日 18:51
  • 13118

JSON-RPC轻量级远程调用协议介绍及使用

JSON-RPC
  • hahahacff
  • hahahacff
  • 2014年06月07日 03:29
  • 43111

JSON-RPC轻量级远程调用协议介绍及使用

JSON-RPC轻量级远程调用协议介绍及使用 目录 技术简介    1 一、JSON-RPC协议描述    1 二、JSON-RPC调用简单示例    1 2.1、服务器端Ja...
  • wilsonke
  • wilsonke
  • 2014年03月22日 15:55
  • 7609

JSON-RPC轻量级远程调用协议介绍及使用

JSON-RPC轻量级远程调用协议介绍及使用 目录 技术简介    1 一、JSON-RPC协议描述    1 二、JSON-RPC调用简单示例    1 2.1、服务器...
  • z875710239
  • z875710239
  • 2017年12月05日 23:31
  • 18

JSON-RPC轻量级远程调用协议介绍及使用

技术简介 json-rpc是基于json的跨语言远程调用协议,比xml-rpc、webservice等基于文本的协议传输数据格小;相对hessian、java-rpc等二进制协议便于调试、实现、扩展...
  • t244387066
  • t244387066
  • 2015年07月20日 15:13
  • 258

使用hadoop中的RPC框架实现远程调用

liunx系统中运行的方法 协议 package cn.itcast.hadoop; public interface UserLoginServiceProtocol { public s...
  • liuqiang211
  • liuqiang211
  • 2016年09月10日 10:02
  • 326

JSON-RPC轻量级远程调用协议介绍及使用

http://blog.csdn.net/hahahacff/article/details/29119077 json-rpc参数: http://127.0.0.1:8080/index.js...
  • earbao
  • earbao
  • 2015年06月06日 19:46
  • 1441

JSON-RPC轻量级远程调用协议介绍及使用

技术简介 json-rpc是基于json的跨语言远程调用协议,比xml-rpc、webservice等基于文本的协议传输数据格小;相对hessian、Java-rpc等二进制协议便于调试、实现、扩展...
  • codepython
  • codepython
  • 2016年10月08日 18:21
  • 1079
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用 xml-rpc 远程调用
举报原因:
原因补充:

(最多只允许输入30个字)