`
yaozhiqiang109
  • 浏览: 119705 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

xml-rpc 2.0和3.0实例

    博客分类:
  • RPC
阅读更多

xml-rpc 2.0介绍:
1、运行在不同操作系统、不同环境
2、使用http作为传输协议
3、xml作为传送信息的编码格式


xml-rpc是一种简单的,轻量级的通过HTTP协议进行RPC通信的规范。一个xml-rpc消息就是一个请求
体为xml的HTTP-POST请求,被调用的方法在服务器端执行并将执行结果以xml格式编码后返回。

xml-rpc 2.0实例:

服务端类

public class MyXmlRpcServer extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        XmlRpcServer xmlRpc=new XmlRpcServer();
        xmlRpc.addHandler("myHandler", new MyHandler());
        byte [] result=xmlRpc.execute(req.getInputStream());
        resp.setContentType("text/xml");
        resp.setContentLength(result.length);
        OutputStream outputStream=resp.getOutputStream();
        outputStream.write(result);
        outputStream.flush();
        outputStream.close();
    }  

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doGet(req, resp);
    }

  
}
 



配置

<servlet>
        <servlet-name>MyXmlRpcServer</servlet-name>
        <servlet-class>xiu.rpc.MyXmlRpcServer</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyXmlRpcServer</servlet-name>
        <url-pattern>/MyXmlRpcServer</url-pattern>
    </servlet-mapping>
 



测试

public class MyXmlRpcClient {

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            XmlRpcClient xmlrpc = new XmlRpcClient("http://127.0.0.1:8080/rpc/MyXmlRpcServer");
            Vector params = new Vector();
            params.addElement("Tom");
            String result = (String) xmlrpc.execute("myHandler.sayHello",params);
            System.out.println(result);
        } catch (MalformedURLException e) {
            System.out.println(e.toString());
        } catch (XmlRpcException e) {
            System.out.println(e.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}
 



rpc 3.0 写servlet

实例:

public class HelloHandler {

	public String sayHello(String str){
		return str;
	}
}
 

服务:

public class Server extends HttpServlet {

	private XmlRpcServletServer xmlRpc;
	
	public void init(ServletConfig config)throws ServletException{
		super.init(config);
		xmlRpc=new XmlRpcServletServer();
		PropertyHandlerMapping phm=new PropertyHandlerMapping();
		try {
			phm.addHandler("HelloHandler", xiu.com.HelloHandler.class);
			xmlRpc.setHandlerMapping(phm);
			XmlRpcServerConfigImpl serverConfig=(XmlRpcServerConfigImpl)xmlRpc.getConfig();
			serverConfig.setEnabledForExtensions(true);
			serverConfig.setContentLengthOptional(false);
		} catch (XmlRpcException e) {
			e.printStackTrace();
		}
	}

	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		xmlRpc.execute(req, resp);
	}
	
	
}

 

测试:

public class xmlRpcClient {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		XmlRpcClientConfigImpl config=new XmlRpcClientConfigImpl();
		try {
			config.setServerURL(new URL("http://127.0.0.1:8080/rpc3/xmlrpc"));
			XmlRpcClient client=new XmlRpcClient();
			client.setConfig(config);
			Vector<String> param=new Vector<String>();
			param.add("tom");
			String result=(String) client.execute("HelloHandler.sayHello", param);
			System.out.println("result:"+result);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (XmlRpcException e) {
			e.printStackTrace();
		}
		
	}

}
 

 

<servlet>
        <servlet-name>XmlRpcServer</servlet-name>
        <servlet-class>xiu.rpc.Server</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>XmlRpcServer</servlet-name>
        <url-pattern>/sayHello</url-pattern>
    </servlet-mapping>
 


rpc 3.0 不写servlet,用属性文件来配置javabean

1、创建javabean

2、配置javabean

3、client调用

rpc 3.0 通过属性文件来配置服务,还是很方便的

 

分享到:
评论

相关推荐

    xml-rpc.net.3.0

    `xml-rpc.net.3.0` 是一个针对C#开发的XML-RPC客户端和服务器库,版本号为3.0.0.270-snapshot。这个库提供了在.NET环境中实现XML-RPC通信所需的功能。 在C#中使用XML-RPC.net库,首先需要了解以下几个关键概念: 1...

    XML-RPC.rar_python xml rpc_python写xml_xml rpc_xml-rpc python

    总的来说,这个压缩包提供了Python实现的XML-RPC服务器和客户端的实例,涵盖了从创建服务器、定义可供调用的函数,到客户端如何发起请求、接收并处理响应的完整流程。这是一份很好的学习资料,对于理解XML-RPC工作...

    Apache xml-rpc入门

    Apache XML-RPC 是一个基于Java的开源XML-RPC服务器和客户端库。它提供了强大的功能,支持多种数据类型,并能够轻松集成到现有的Java应用程序中。 ##### 1. 数据类型支持 Apache XML-RPC 支持以下几种基本的数据...

    XML-RPC.rar_HTTP协议_XML-R_XML-RPC _xml rpc

    简单介绍了XML-RPC这种通过HTTP协议进行RPC通信的规范。 以Apache XML-RPC 3.0为基础,对XML-RPC的基本原理及Apache XML-RPC 3.0的主要特性进行了讨论和分析

    Apache的XML-RPC简化你的WebService应用

    Apache XML-RPC(XML Remote Procedure Call)是一种基于HTTP协议的RPC(远程过程调用)技术,...同时,可以结合提供的“xmlrpc”压缩包文件中的示例代码进行学习和实践,进一步提升对Apache XML-RPC的理解和使用能力。

    JsonRpc2.0 源码

    son-rpc是基于json的跨语言远程调用协议,比xml-rpc、webservice等基于文本的协议传输数据格小;相对hessian、java-rpc等二进制协议便于调试、实现、扩展,是非常优秀的一种远程调用协议

    xml_rpc需要的jar包

    2. **客户端**:在客户端,使用XML-RPC客户端API(如`org.apache.xmlrpc.client.XmlRpcClient`)创建一个客户端实例,配置服务器的URL,然后就可以调用服务器端注册的方法。 3. **数据交换**:XML-RPC使用XML格式来...

    XML-RPC客户端程序

    XML-RPC客户端测试程序 向XMLRPC服务器发送一个XML-RPC请求,以文本文件读取xml文件; 记录返回的数据到文件中; windows命令行程序,使用前请配置*.pln文件 askcyg@hotmail.com

    Java的XML-RPC函数库源代码

    在Java中,Apache提供了一个名为XML-RPC的库,使得开发人员能够轻松地实现XML-RPC客户端和服务端的功能。这个库的特点是轻量级、易于使用,适合构建分布式系统中的简单通信。 标题"Java的XML-RPC函数库源代码"表明...

    2001_Programming Web Services with XML-RPC

    列举了一些公共可用的XML-RPC服务实例,供开发者参考。 ##### 6.3 设计考虑 讨论了设计XML-RPC应用时需要注意的关键因素。 ##### 6.4 超越XML-RPC 展望了XML-RPC之外的其他Web服务技术及其发展方向。 ##### 6.5...

    java delphi 互相调用 xml-rpc实例

    在这个实例中,我们将探讨如何使用XML-RPC实现Java与Delphi之间的互相调用,以及提供的源码和可执行文件的用途。 1. **XML-RPC 简介**: XML-RPC基于HTTP协议,使用XML作为数据交换格式。它定义了一种标准的方法,...

    基于XML-RPC和PHP5的WEB服务的研究与实现.pdf

    "基于XML-RPC和PHP5的WEB服务的研究与实现" 本文研究了基于XML-RPC和PHP5的WEB服务的原理和实现技术。XML-RPC是一种远程过程调用(RPC)协议,它允许不同的Web服务之间进行交互。PHP5是一种流行的 сервер-...

    xml-rpc.rar_rpc visual basic_vb6 soap webservi_vb6 xml rpc_xml

    虽然XML-RPC和SOAP都是基于XML的远程调用协议,但SOAP通常更为复杂,支持更丰富的数据类型和操作。 6. **XML-RPC库**:为了在VB6中使用XML-RPC,开发者可能需要引入第三方库,如Apache Axis或Microsoft的.NET ...

    XML-RPC 实现C++和C#交互.pdf

    【XML-RPC 实现C++和C#交互】 XML-RPC(XML Remote Procedure Call)是一种简单、跨平台的远程过程调用协议,它利用HTTP作为传输协议,XML作为数据编码方式,使得不同编程语言编写的程序能够进行通信。在本文中,...

    delphi与JSP通过xml-rpc协议交换数据的例子.rar_delphi XML_delphi jsp_delphi rp

    本示例是关于如何在Delphi环境中通过XML-RPC与Java JSP应用程序进行数据交互的实例。下面将详细介绍这个主题。 1. **XML-RPC基本概念** - XML-RPC使用HTTP作为传输协议,XML作为数据格式,实现了简单且灵活的远程...

    JAX-WS2.0 API

    JAX-WS 2.0是JAX-WS的第二个主要版本,它在JAX-RPC(Java API for XML-based RPC)的基础上进行了改进,引入了许多新特性以提升开发者的体验和效率。 **JAX-WS 2.0 的核心概念:** 1. **服务端点接口(SEI, ...

    hibernate-configuration-3.0.dtd、hibernate-mapping-3.0.dtd

    而`hibernate-configuration-3.0.dtd`和`hibernate-mapping-3.0.dtd`是Hibernate 3.0版本中的两个核心文件,它们定义了Hibernate配置文件和映射文件的语法规则,是理解Hibernate工作原理的关键所在。 首先,我们来...

    ejb2.0与ejb3.0的区别

    - **EJB 2.0**:需要为每个实体Bean定义一个Home接口,用于创建和查找Bean实例。 - **EJB 3.0**:取消了Home接口的需求,简化了实体Bean的创建和查找过程。 #### 五、其他变化 - **EJB 3.0**:提供了轻量级的支持,...

    xml-rpc.net.2.4.0.zip

    Version 2.4.0 has been released: xml-rpc.net.2.4.0.zip New feature and fixed issues: New StructParams property on XmlRpcMethodAttribute which provides supports for APIs which use a struct to ...

    Android使用XML-RPC实现blog客户端源码

    总之,通过学习和使用这个Android XML-RPC博客客户端源码,开发者不仅可以掌握XML-RPC通信技术,还能了解到Android应用的网络编程、数据解析、界面设计等多个方面,为今后的Android开发积累宝贵经验。

Global site tag (gtag.js) - Google Analytics