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

【Apache之XML-RPC远程方法调用示例】

阅读更多

一、Apache XML-RPC介绍

Apache XML-RPC is a Java implementation of XML-RPC, a popular protocol that uses XML over HTTP to implement remote procedure calls.(HTTP + XML)

 

XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用。它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。Xml-Rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。XML-RPC是工作在Internet上的远程过程调用协议。一个XML-RPC消息就是一个请求体为xml的http-post请求,被调用的方法在服务器端执行并将执行结果以xml格式编码后返回。

Version 3 of Apache XML-RPC is still compliant to the XML-RPC specification. However, the user may enable several vendor extensions are available, that greatly extend the power of XML-RPC:

All primitive Java types are supported, including long, byte, short, and double.

Calendar objects are supported. In particular, timezone settings, and milliseconds may be sent.

DOM nodes, or JAXB objects, can be transmitted. So are objects implementing the java.io.Serializable interface.

Both server and client can operate in a streaming mode, which preserves resources much better than the default mode, which is based on large internal byte arrays.

 

二、实现示例

服务端实现

步骤一、编写实现类

package server;

public class Calculator {

public int add(int i1, int i2) {

System.out.println("add  i1=" + i1 + ",i2=" + i2);

return i1 + i2;

}

 

public int subtract(int i1, int i2) {

System.out.println("subtract  i1=" + i1 + ",i2=" + i2);

return i1 - i2;

}

}

步骤二、创建配置映射文件

 

在包org.apache.xmlrpc.webserver下面新建一个 XmlRpcServlet.properties文件,注意:包名和文件名都不能变。在里面添加上对刚才新建的Calculator类的声明,以便外部调用。

Calculator=org.apache.xmlrpc.demo.Calculator

=左侧是Calculator是外部调用时使用的名称,例如gaojingsong_Calculator

=右侧是类的全名(包括包名),例如server.Calculator

gaojingsong_Calculator=server.Calculator

步骤三、修改web.xml 声明服务名称类

<servlet>  

        <servlet-name>XmlRpcServlet</servlet-name>  

        <servlet-class>org.apache.xmlrpc.webserver.XmlRpcServlet</servlet-class>  

        <init-param>  

          <param-name>enabledForExtensions</param-name>  

          <param-value>true</param-value>  

        </init-param>  

    </servlet>  

    <servlet-mapping>  

        <servlet-name>XmlRpcServlet</servlet-name>  

        <url-pattern>/xmlrpc_gaojingsong</url-pattern>  

    </servlet-mapping>  

步骤四、开发服务端

package server;

 

import org.apache.xmlrpc.server.PropertyHandlerMapping;

import org.apache.xmlrpc.server.XmlRpcServer;

import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;

import org.apache.xmlrpc.webserver.WebServer;

 

public class Server {

    private static final int port = 9999;

 

    public static void main(String[] args) throws Exception {

    System.out.println("------Server----begin-----------");

        WebServer webServer = new WebServer(port);   

        XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();   

        PropertyHandlerMapping phm = new PropertyHandlerMapping();

        phm.addHandler("gaojingsong_Calculator", Calculator.class);

        xmlRpcServer.setHandlerMapping(phm);

        XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();

        serverConfig.setEnabledForExtensions(true);

        serverConfig.setContentLengthOptional(false);

        webServer.start();

        System.out.println("------Server----end-----------");

    }

}

 

客户端

 

package client;

 

import java.net.URL;

 

import org.apache.xmlrpc.client.XmlRpcClient;

import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

 

public class Client {

    public static void main(String[] args) throws Exception {

        // create configuration

        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();

        config.setServerURL(new URL("http://192.168.1.100:9999/xmlrpc_gaojingsong"));

        config.setEnabledForExtensions(true);  

        config.setConnectionTimeout(60 * 1000);

        config.setReplyTimeout(60 * 1000);

        

        XmlRpcClient client = new XmlRpcClient();

        client.setConfig(config);

        Object[] params = new Object[]{new Integer(5), new Integer(3)};

        Integer result = (Integer) client.execute("gaojingsong_Calculator.add", params);       

        System.out.println("result : "+result);

        result = (Integer) client.execute("gaojingsong_Calculator.subtract", params);       

        System.out.println("result : "+result);

    }

}

 

备注:xmlrpc_gaojingsong 对应的是web.xml 文件中的上下文路径

         gaojingsong_Calculator对应的是XmlRpcServlet.properties文件中等号左边的key

 

三、验证

服务端



 

客户端



 

  • 大小: 32.2 KB
  • 大小: 93.5 KB
  • 大小: 97.2 KB
0
2
分享到:
评论

相关推荐

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

    Apache XML-RPC(XML Remote Procedure Call)是一种基于HTTP协议的RPC(远程过程调用)技术,它允许不同的编程语言在互联网上进行通信。这个技术的核心是通过XML来封装调用参数,然后通过HTTP协议发送到远程服务器...

    Apache xml-rpc入门

    **XML-RPC(XML Remote Procedure Call)**是一种轻量级的远程过程调用协议,它允许在不同操作系统和语言环境之间进行数据交换。XML-RPC 使用HTTP作为传输协议,XML作为消息封装格式。由于其简单易用且跨平台特性,...

    xml-rpc学习心得

    XML-RPC(XML Remote Procedure Call)是一种轻量级的远程过程调用协议,它使用XML来编码调用数据,并通过HTTP进行传输。XML-RPC使得运行在不同操作系统上的应用程序能够通过网络互相通信并共享功能。这种协议的主要...

    Apache xml-rpc入门 sevlet服务及启动服务器线程

    Apache XML-RPC(XML Remote Procedure Call)是一种基于HTTP协议的远程调用技术,它允许不同编程语言、不同操作系统之间的应用程序进行通信。XML-RPC使用XML作为数据交换格式,通过HTTP作为传输协议,使得分布式...

    Java的XML-RPC函数库源代码

    XML-RPC(XML Remote Procedure Call)是一种通过网络调用远程函数的方法,它使用XML作为数据交换格式,并基于HTTP协议进行通信。在Java中,Apache提供了一个名为XML-RPC的库,使得开发人员能够轻松地实现XML-RPC...

    xml-rpc.rar_rpc visual basic_vb6 soap webservi_vb6 xml rpc_xml

    XML-RPC(XML Remote Procedure Call)是一种基于XML的远程过程调用协议,它允许客户端通过HTTP协议调用服务器上的函数或方法,实现分布式计算。在VB6(Visual Basic 6)环境中实现XML-RPC,可以极大地扩展应用程序...

    apache-xmlrpc-current-bin.zip

    Apache XML-RPC(远程过程调用)是一种基于XML的网络通信协议,允许不同的应用程序和操作系统之间进行互操作。这个"apache-xmlrpc-current-bin.zip"压缩包包含了Apache XML-RPC库的可执行文件和相关资源,版本为...

    apache-xmlrpc-3.1.3-bin.tar.gz

    Apache XML-RPC(远程过程调用)是一种轻量级的通信协议,允许程序在不同的操作系统和编程语言之间进行互操作。这个"apache-xmlrpc-3.1.3-bin.tar.gz"压缩包文件包含了Apache XML-RPC库的二进制版本,适用于在Java...

    Java xmlrpc远程方法调用(源码)

    下面我们将详细探讨Java XML-RPC的工作原理、实现步骤以及如何利用提供的源码来创建和调用远程方法。 1. **XML-RPC协议基础**: - XML-RPC基于XML标准,通过HTTP作为传输协议,允许客户端向服务器发送一个方法调用...

    Apache xmlrpc 3.1 with examples

    Apache XML-RPC(XML Remote Procedure Call)是一种基于HTTP协议的RPC(远程过程调用)框架,它允许通过XML编码来实现跨平台、跨语言的远程方法调用。Apache XML-RPC 3.1是该技术的一个版本,它提供了稳定性和性能...

    wordpress-java:Java库使用Wordpress的xml-rpc功能

    在实际应用中,你可能需要参考项目文档来设置环境,导入库,创建XML-RPC客户端,然后调用相应的API方法。例如,你可以创建一个`wp.getUsersBlogs()`请求来获取可用的WordPress站点信息,或者使用`wp.newPost()`方法...

    Spring整合JAVA XMLRPC

    在提供的压缩包文件中,可能包含了一个简单的Web应用示例,如`index.jsp`可能用于展示或触发XML-RPC调用。`META-INF`目录通常存储应用元数据,比如MANIFEST.MF文件。而`WEB-INF`目录则包含Web应用的特定配置,如web....

    xmlRpc的完整例子

    XML-RPC(XML Remote Procedure Call)是一种基于HTTP协议和XML数据格式的远程调用技术,它允许客户端通过发送XML文档来调用服务器上的方法,并获取返回的结果。在本文中,我们将深入探讨XML-RPC的工作原理,以及...

    XMLRpc Demo

    XMLRpc Demo是一个演示项目,它展示了如何利用XML-RPC(XML Remote Procedure Call)技术实现在不同服务器和不同编程语言之间的远程调用。XML-RPC是一种轻量级的通信协议,它允许程序通过HTTP协议发送结构化的数据,...

    JavaCallXMLRPCD7

    - 设置XML-RPC服务器需要创建一个实现了XML-RPC服务器接口的类,该类包含要公开的远程方法。这些方法通常接收和返回基本类型、数组或自定义对象,所有这些都通过XML序列化和反序列化。 2. **DELPHI XML-RPC客户端*...

    Java RPC调用示例

    在这个Java RPC调用示例中,我们将探讨RPC的基本概念、实现机制以及如何在Java中创建一个简单的RPC框架。 首先,RPC的核心思想是将远程调用过程透明化,使得开发者可以像调用本地方法一样调用远程服务。这种抽象...

    Delphixmlrpc

    在Delphi中实现XML-RPC调用,通常需要一个库或框架来处理底层的通信细节。Delphi社区提供了几个这样的工具,如SuperObject和XmlrpcDelphi。这些库可以帮助开发者创建XML-RPC请求,将它们编码为HTTP消息,并解析来自...

    axis开发JAX-RPC webservice

    它允许开发者以简单的编程模型调用远程Web服务,就像调用本地方法一样,通过XML进行数据交换。 3. **Web服务生命周期**:包括服务的创建(定义服务接口、实现服务逻辑)、部署(生成WSDL文件、发布到服务器)、调用...

Global site tag (gtag.js) - Google Analytics