`
sunwinner
  • 浏览: 202635 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

XML-RPCHello World

阅读更多

XML-RPC 是一种比 SOAP 更早的、简单的轻量级 Web 服务技术,是 XML Web 服务的鼻祖。它是一个用于远程过程调用(remote procedure call,RPC)的简单规范,这种调用使用 HTTP 作为传输协议,并使用 XML 词汇表作为消息有效负载。由于 XML-RPC 非常简单(整个规范打印出来还不到十页纸)。

XML-RPC 数据类型
 XML-RPC 标签                描述
< string >                         字符的一个序列
< int >                             有符号或无符号 32-bit 整数值
< boolean >                     true(1)或 false(0)
< double >                      有符号双精度浮点数
< dateTime.iso8601 >     日期和时间(当没有时区)
< base64 >                     一个 base64 编码的字符串
< array >                        一个数据类型序列的容器
< struct >                        一个关键字-值对的容器

XML-RPC之Hello World:

    处理器类:

package org.sun.rpc.handler;

public class HelloHandler {

    public String sayHello(String name) {
        return "Hello, " + name;
    }
}

    Server端:

package org.sun.rpc.server;


import java.io.IOException;

import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.server.PropertyHandlerMapping;
import org.apache.xmlrpc.server.XmlRpcServer;
import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
import org.apache.xmlrpc.webserver.WebServer;
import org.sun.rpc.handler.HelloHandler;

public class HelloServer {
    public static final int PORT = 8080;

    public static void main(String... args) throws XmlRpcException, IOException {

        System.out.println("Starting RPC Server Now ...");
        WebServer webServer = new WebServer(PORT);
        XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();
        PropertyHandlerMapping handlerMapping = new PropertyHandlerMapping();
        handlerMapping.addHandler("hello", HelloHandler.class);
        xmlRpcServer.setHandlerMapping(handlerMapping);

        XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();
        serverConfig.setEnabledForExtensions(true);
        serverConfig.setContentLengthOptional(false);

        webServer.start();
        System.out.println("Registered HelloHandler to \"hello\"");
        System.out.println("Now Accepting Requests ...");
    }
}

    Client端:

package org.sun.rpc.client;

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;

public class HelloClient {

    public static void main(String... args) throws MalformedURLException, XmlRpcException {

        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
        config.setServerURL(new URL("http://127.0.0.1:8080/"));
        XmlRpcClient client = new XmlRpcClient();
        client.setTransportFactory(new XmlRpcCommonsTransportFactory(client));
        client.setConfig(config);
        Object[] params = new Object[] { "Jacky" };
        String result = (String) client.execute("hello.sayHello", params);
        System.out.println("Response from server is: " + result);
    }
}

   代码使用apache-xmlrpc库。

底层的处理:

   sayHello()方法的请求实际被转换成一个HTTP调用,服务端解析XML文件后如果有匹配的方法将相应结果编码成XML文件。

0
0
分享到:
评论

相关推荐

    JavaEE源代码 xml-apis

    JavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源...

    xml-apis-1.4.01.jar.zip

    `xml-apis-1.4.01.jar` 是一个包含XML API实现的Java库,它提供了处理XML文档所需的基本接口和类。在Java开发中,如果遇到“xml-apis-1.4.01.jar does not exist”的错误,通常意味着项目缺少了对XML解析的支持。 ...

    xml-apis-2.0.2.jar ecside 依赖包之一

    xml-apis-2.0.2.jar 是一个专门处理XML相关操作的Java库,它是ECIDE(Enterprise Content Interaction Development Environment,企业内容交互开发环境)的依赖包之一。ECIDE可能是一个用于构建企业级应用的集成开发...

    XML-Parser-2.41.tar.gz

    XML-Parser是处理XML文档的库,为程序提供解析和生成XML的能力。在这个场景中,"XML-Parser-2.41.tar.gz" 是一个特定版本的XML解析器,它被用作飞鸽工具安装过程中的依赖项,这意味着飞鸽工具在运行或安装时需要这个...

    xml-apis-ext-1.3.04.jar

    xml-apis-ext-1.3.04.jar

    xml-apis.jar

    xml-apis.jar xml-apis.jar

    OPC XML-DA Sample Client

    "OPC XML-DA Sample Client" 是一个演示应用程序,用于展示如何通过XML-DA接口与OPC服务器进行交互。 这个样本客户端提供了以下关键知识点: 1. **OPC 技术**: OPC最初设计用于Microsoft Windows环境,它定义了一...

    xml-apis-2.0.2.pom_pom密度是多少

    xml-apis-2.0.2.pomxml-apis-2.0.2.pomxml-apis-2.0.2.pom

    spring4-mvc-gradle-xml-hello-world, Gradle + spring 4 MVC Hello World 示例( XML ).zip

    spring4-mvc-gradle-xml-hello-world, Gradle + spring 4 MVC Hello World 示例( XML ) Gradle --spring-4 MVC Hello Worldspring 4 MVC + JSP视图+ XML配置模板,使用Gradle构建工具。使用的###1. 技术Gradle 2.0...

    xml-resolver-1.2

    xml-resolver-1.2 xml-resolver-1.2

    xml-commons-resolver-1.1

    另一个文件“xml-commons-resolver-1.1.jar.license.txt”则包含了关于这个库的许可信息,对于遵循开源原则的项目来说,这是至关重要的,因为了解并遵守许可证条款可以避免潜在的法律问题。 在实际应用中,XML ...

    perl-XML-Twig-3.44-2.el7.noarch.rpm

    离线安装包,亲测可用

    xercesImpl.jar,xml-apis.jar

    为了解决这个问题,我们可以引入`xercesImpl.jar`和`xml-apis.jar`这两个Java档案库(JAR)文件。 `xercesImpl.jar`是Xerces-J的实现,它是一个高性能、完全符合XML 1.0和XML 1.1规范的解析器。Xerces-J是由Apache...

    xml-apis.jar.zip

    "xml-apis.jar" 是一个包含XML API实现的Java归档文件,它提供了处理XML文档所需的核心接口和类。这个JAR文件通常包含了对XML 1.0规范的支持,可能还包含了对XPath、XSLT和DOM等XML相关技术的API。 1. **XML API**:...

    xml-security-bin-1_2_1.zip

    "xml-security-bin-1_2_1.zip" 文件是一个包含XML安全库的压缩包,版本为1.2.1。这个库可能包含了用于对XML文档进行签名、加密和验证的工具和API,旨在确保XML数据在传输过程中的完整性和安全性。 XML签名是一种...

    jackson-dataformat-xml-2.9.6.jar

    jackson-dataformat-xml-2.9.6.jar

    xml-rpc.net.3.0

    XML-RPC(XML Remote Procedure Call)是一种基于XML的远程过程调用协议,它允许软件应用程序通过网络进行通信,执行远程服务器上的方法,就像它们在本地机器上运行一样。`xml-rpc.net.3.0` 是一个针对C#开发的XML-...

    XML-RPC客户端程序

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

    perl-XML-XPath-1.42-3.el8.noarch(1).rpm

    官方离线安装包,亲测可用

    2001_Programming Web Services with XML-RPC

    ### XML-RPC与Web服务编程 #### 一、引言 《2001_Programming Web Services with XML-RPC》是一本关于基于XML-RPC技术进行Web服务编程的书籍。该书由Simon St. Laurent、Joe Johnston和Edd Dumbill合著,并于2001...

Global site tag (gtag.js) - Google Analytics