`

Web Services:Apache XML-RPC

    博客分类:
  • java
阅读更多
XML-RPC(http://ws.apache.org/xmlrpc/ )的全称是XML Remote Procedure Call,即XML远 程方法 调 用。是JAVA 实现 的XML-RPC。  
  
    这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。Xml-Rpc的定义尽

XML-RPC(http://ws.apache.org/xmlrpc/ )的全称是XML Remote Procedure Call,即XML远 程方法 调 用。是JAVA 实现 的XML-RPC。 
 
    这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。Xml-Rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。
 
  XML-RPC是工作在Internet上的远程过程调用协议。一个XML-RPC消息就是一个请求体为xml的http-post请求,被调用的方法在服务器端执行并将执行结果以xml格式编码后返回。
 
■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.
 
   概念图如下: 
  
  
 
和RMI类似,需要服务器类和客户端类。还需要配置web.xml.
 
服务器类代码片段: 
package org.apache.xmlrpc.demo.webserver;
 
  import java.net.InetAddress;
  import org.apache.xmlrpc.common.TypeConverterFactoryImpl;
  import org.apache.xmlrpc.demo.webserver.proxy.impls.AdderImpl;
  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 = 8080;
 
      public static void main(String[] args) throws Exception {
          WebServer webServer = new WebServer(port);       
          XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();         
          PropertyHandlerMapping phm = new PropertyHandlerMapping();
          /* Load handler definitions from a property file.
           * The property file might look like:
           *   Calculator=org.apache.xmlrpc.demo.Calculator
           *   org.apache.xmlrpc.demo.proxy.Adder=org.apache.xmlrpc.demo.proxy.AdderImpl
           */
 
          phm.load(Thread.currentThread().getContextClassLoader(),"MyHandlers.properties");
          /* You may also provide the handler classes directly,
           * like this:
           * phm.addHandler("Calculator",
           *     org.apache.xmlrpc.demo.Calculator.class);
           * phm.addHandler(org.apache.xmlrpc.demo.proxy.Adder.class.getName(),
           *     org.apache.xmlrpc.demo.proxy.AdderImpl.class);
           */
          xmlRpcServer.setHandlerMapping(phm);
 
          XmlRpcServerConfigImpl serverConfig =
 
              (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();
          serverConfig.setEnabledForExtensions(true);
          serverConfig.setContentLengthOptional(false);
          webServer.start();
      }
  }
 
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>
          <description>
            Sets, whether the servlet supports vendor extensions for XML-RPC.
          </description>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>XmlRpcServlet</servlet-name>
        <url-pattern>/xmlrpc</url-pattern>
    </servlet-mapping>
 
客户端代码片段: 
package web.service.xml.rpc;
 
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory;
import org.apache.xmlrpc.client.util.ClientFactory;
 
public class Client {
 
    public static void main(String[] args) throws Exception {
        // create configuration
        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
        config.setServerURL(new URL("http://127.0.0.1:8080/xmlrpc"));
        config.setEnabledForExtensions(true);   
        config.setConnectionTimeout(60 * 1000);
        config.setReplyTimeout(60 * 1000);
        XmlRpcClient client = new XmlRpcClient();
 
        // use Commons HttpClient as transport
        client.setTransportFactory(
            new XmlRpcCommonsTransportFactory(client));
 
        // set configuration
        client.setConfig(config);
 
        // make the a regular call
        Object[] params = new Object[]
            { new Integer(2), new Integer(3) };
        Integer result = (Integer) client.execute("calculator_test.add", params);
        System.out.println("2 + 3 = " + result);
    }
}
 
这里的calculator_test.add关键字是在MyHandlers.properties中配置的。add是方法名。
配置例子:calculator_test=web.service.xml.rpc.Calculator
 
Calculator类定义如下:
package web.service.xml.rpc;
 
public class Calculator {
 
    public int add(int i1, int i2) {
            return i1 + i2;
    }
    public int subtract(int i1, int i2) {
            return i1 - i2;
    }
}

 

http://edu.codepub.com/2009/1001/16000.php

 

分享到:
评论

相关推荐

    xml-rpc.rar_rpc visual basic_vb6 soap webservi_vb6 xml rpc_xml

    6. **XML-RPC库**:为了在VB6中使用XML-RPC,开发者可能需要引入第三方库,如Apache Axis或Microsoft的.NET Framework中的System.Web.Services组件。这些库提供了用于序列化和反序列化XML-RPC请求和响应的方法。 7....

    apache axis-1.7.9

    Apache Axis2是Apache软件基金会开发的一个开放源代码Web服务框架,用于构建和部署高效、可扩展的Web服务。它基于Axis1.x进行重大改进,提供了更强大的功能和更好的性能。在"apache axis-1.7.9"这个版本中,我们获取...

    xmlrpc-am5-ws

    这个文件属于Apache Web Services Commons Util库,它提供了Web服务开发中的一些通用实用工具。可能包含线程池、缓存机制、HTTP连接管理等。在XML-RPC场景下,它可能被用来增强XML-RPC客户端或服务器的性能和稳定性...

    axis开发JAX-RPC webservice

    "Axis开发JAX-RPC WebService" 指的是使用Apache Axis框架来创建基于Java API for XML Remote Procedure Calls (JAX-RPC)的Web服务。这是一个古老但仍然有用的技术,用于构建分布式应用程序,使得不同系统之间可以...

    JAX-WS_Java API for XML Web Services

    **JAX-WS: Java API for XML Web Services** JAX-WS(Java API for XML Web Services)是Java平台上用于创建Web服务和Web服务客户端的核心API。这个标准由Java社区进程(JCP)制定,旨在简化面向服务架构(SOA)的...

    jmeter图文入门教程.pdf

    站点的Web1.0的Web 2.0 (ajax, flex and flex-ws-amf) Web Services: SOAP / XML-RPC 通过JDBC驱动程序的数据库 ⽬录: LDAP ⾯向消息的服务通过JMS Service: POP3, IMAP, SMTP FTP 服务 等等其他协议

    Web Servies Essentials.pdf

    - **第一部分:Web服务简介** - **第1章 引言** - **1.1 Web服务简介**:这部分介绍了Web服务的基本概念及其在现代网络应用中的作用。 - **1.2 Web服务架构**:描述了Web服务的主要组成部分,包括客户端、服务端...

    apache-cxf-2.7.5所有jar都在

    3. **数据绑定**:CXF支持JavaBeans、XMLBeans、JAXB(Java Architecture for XML Binding)、JAX-RPC以及DOM等数据绑定技术,方便了XML数据与Java对象之间的转换。 4. **WS-*标准支持**:CXF实现了众多Web服务标准...

    apache-cxf-2.2.12-src.zip

    它能够轻松地将Java类转换为Web服务,反之亦然,通过JAX-WS(Java API for XML Web Services)标准。 2. **协议支持:** CXF支持多种通信协议,如HTTP、HTTPS、JMS、FTP等,使得服务可以在各种网络环境中部署和交互...

    apache-cxf-2.7.10

    CXF支持多种数据绑定技术,如JAXB(Java Architecture for XML Binding),用于将XML文档映射到Java对象,以及JAX-RPC(Java API for XML-based Remote Procedure Calls),使得Java方法可以直接调用远程Web服务。...

    apache-cxf-2.7.6.rar

    3. **数据绑定**:CXF支持多种数据绑定技术,如JAXB(Java Architecture for XML Binding)用于将XML与Java对象之间进行自动转换,以及JAX-RPC(Java API for XML-Based Remote Procedure Calls)。 4. **MTOM/XOP*...

    Apache Web Services Axis2(1.4.1) 详细经典入门实例图文并茂

    Apache Axis2是Apache软件基金会开发的一个用于构建Web服务和实现Service-Oriented Architecture (SOA)的核心框架。本文将深入探讨Axis2 1.4.1版本的经典入门实例,通过Eclipse集成开发环境中的Axis2插件,帮助你...

    Web服务框架 Apache Axis

    3. **可扩展性**:Apache Axis支持JAX-RPC(Java API for XML-RPC)和JAX-WS(Java API for XML Web Services)规范,允许开发者使用各种Web服务标准和模式。此外,它还具有插件机制,可以方便地添加新的数据类型或...

    WebServices教程

    3. XML-RPC(XML远程过程调用):早期的Web服务技术,使用XML进行简单数据交换。 4. JSON-RPC:类似于XML-RPC,但使用JSON(JavaScript对象表示法)作为数据格式,更轻量级。 四、Web服务的应用场景 1. B2B交互:...

    WebServices开发-Axis实例CXF实例

    Axis支持JAX-RPC(Java API for XML-based RPC)规范,但随着JAX-WS(Java API for XML Web Services)的出现,Axis2应运而生,它提供了更现代的WebServices实现。 **CXF**,全称为CXF XFire eXtended,是另一个...

    apache-cxf-2.5.2.zip

    1. **Web服务实现与消费**:CXF允许开发者用多种编程模型来创建Web服务,例如JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services)。它支持WSDL(Web Services Description ...

    用Apache AXIS 开发 Web Services Step By Step

    ### 使用Apache Axis开发Web Services 步骤详解 #### 一、环境准备 在开始使用Apache Axis开发Web Services之前,需要确保开发环境已经搭建好。本文档将详细介绍如何配置必要的环境。 **1.1 软件下载准备** - **...

    javax.xml.ws.Service

    【javax.xml.ws.Service】是Java平台上用于Web服务客户端的一个核心接口,它位于Java Web Services (JWS) API中,主要用于创建和使用Web服务。这个接口是JAX-WS(Java API for XML Web Services)规范的一部分,它...

Global site tag (gtag.js) - Google Analytics