`
wly719
  • 浏览: 290771 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

XML-RPC(远程调用)

阅读更多
The XmlRpcClient
xml-rpc java的下载路径
http://apache.freelamp.com/ws/xmlrpc/


客户端的配置要设置下面几个对象。



例子如下:
利用默认的TransportFactory的客户端代码片段:

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 XmlRpcSunHttpTransportFactory(client));//default TransportFactory
//        client.setTransportFactory( new XmlRpcLocalTransportFactory(client));
//        client.setTransportFactory( new XmlRpcLiteHttpTransportFactory(client));
//        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.add", params);
        System.out.println("2 + 3 = " + result);
      
        // make a call using dynamic proxy
//        ClientFactory factory = new ClientFactory(client);
//        Calculator calculator = (Calculator) factory.newInstance(Calculator.class);
//        int sum = calculator.add(2, 4);
//        System.out.println("2 + 4 = " + sum);
    }

我们调用远程方法Calculator.add,输入参数2,3.得到预期结果。
注意 :运行XmlRpcCommonsTransportFactory的时候出现异常 ,用到基于Jakarta HTTP Client的Factory时,因为这个开源包没有包含 Jakarta HTTP Client的jar包,因此需要到官网上下载这个jar包。
The Transport Factory





Server-side XML-RPC

The Server configuration




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(),"\\org\\apache\\xmlrpc\\webserver\\MyHandler.properties");

        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();
        System.out.println("Registered Calculator to \"Calculator\"");   
		System.out.println("Now Accepting Requests ...");   
    }




从上面的server端代码可以看出:
可以有2中方式实现server端代码

phm.addHandler("Calculator", org.apache.xmlrpc.demo.Calculator.class);





 phm.load(Thread.currentThread().getContextClassLoader(),"\\org\\apache\\xmlrpc\\webserver\\MyHandler.properties");



下面这中情况需要建一个MyHandler.properties文件。
内容:

Calculator=org.apache.xmlrpc.demo.Calculator


对于server端,还可以这样写

private static final int port = 8080;

    public static void main(String[] args) throws Exception {
        XmlRpcServlet servlet = new XmlRpcServlet();
        ServletWebServer webServer = new ServletWebServer(servlet, port);
        webServer.start();
    	System.out.println("Now XmlRpcServlet Accepting Requests  ...");   
    }


用这种方式的话,必须有个XmlRpcServlet.properties这个文件
properties文件必须在org.apache.xmlrpc.webserver这个目录下

Calculator=org.apache.xmlrpc.demo.Calculator
  • 大小: 79.3 KB
  • 大小: 75.2 KB
  • 大小: 89.6 KB
分享到:
评论

相关推荐

    LabVIEW XML-RPC

    - XML-RPC(XML Remote Procedure Call)是一种简单的基于HTTP协议的远程调用方法,使用XML作为数据传输格式。 - 它允许客户端(如LabVIEW应用)通过发送一个HTTP请求到服务器执行特定的函数或方法,并接收服务器...

    php xml-rpc远程调用

    在讨论PHP中XML-RPC远程调用的知识点之前,我们先来了解XML-RPC是一种什么技术。XML-RPC(XML Remote Procedure Call)是一种使用HTTP作为传输协议,XML作为编码方式的远程过程调用(RPC)协议。它允许一个程序在...

    3.0 XML-RPC 官方示例+源码+官网地址资料.rar

    总之,XML-RPC 3.0是实现跨平台、跨语言的远程调用的一种有效手段,其简洁的协议设计和广泛的语言支持使得它在多种场景下都能发挥作用。通过学习和掌握XML-RPC,开发者可以构建起高效、灵活的分布式系统。

    xml-rpc学习心得

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

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

    Apache XML-RPC(XML Remote Procedure Call)是一种轻量级的基于HTTP协议的远程调用技术,它允许在不同的网络环境中,使用不同的编程语言实现的服务器之间进行通信。XML-RPC利用XML作为数据交换格式,提供了简单、...

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

    XML-RPC(XML Remote Procedure Call)是一种基于XML的远程过程调用协议,它允许客户端通过HTTP协议调用服务器上的函数,实现跨平台、跨语言的远程调用。在这个"XML-RPC.rar"压缩包中,包含了一系列Python实现的XML-...

    使用 XML-RPC 为 C++ 应用程序启用 Web 服务

    虽然 SOAP 提供了更多高级功能,但对于简单的远程调用和跨平台集成,XML-RPC 的简洁性和易用性使其成为一个理想的选择。通过遵循上述步骤并结合适当的开源库,开发人员可以快速地将 C++ 应用程序转变为可从 Web 访问...

    Apache xml-rpc入门

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

    xml-rpc.net.3.0

    这里,`Invoke`方法用于执行远程调用,第一个参数是方法名,第二个参数是传递给服务器的方法参数。 3. **服务器端API**:在服务器端,开发者可以使用`XmlRpcServerProtocol`来创建XML-RPC服务。定义XML-RPC方法...

    面向嵌入式系统XML-RPC的C实现设计

    针对这些问题,本文提出了一种基于C语言开发的面向嵌入式系统的XML-RPC远程调用应用实现框架。 #### 关键词解读 - **嵌入式系统**:指那些专门设计用于特定任务或功能的计算机系统。这些系统通常具有资源受限的...

    xml-rpc.net.2.1.0.rar

    XML-RPC(XML Remote Procedure Call)是一种基于XML的远程过程调用协议,它允许客户端通过HTTP协议调用服务器上的方法,实现跨平台、跨语言的分布式计算。在.NET环境中,`xml-rpc.net.2.1.0`库提供了一个方便的实现...

    apache XML-RPC

    Apache XML-RPC(XML Remote Procedure Call)是一种基于XML的远程过程调用协议,它允许不同的计算机之间通过网络进行通信,...通过合理使用提供的JAR文件,我们可以轻松地搭建起服务端和客户端,实现高效的远程调用。

    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 ...

    Java的XML-RPC函数库源代码

    总结起来,Apache的Java XML-RPC库是一个强大且轻量级的工具,它提供了实现XML-RPC客户端和服务端的功能,便于开发者进行跨平台的远程调用。源代码的开放性使得定制和学习变得更加容易,而其在Web服务中的应用则...

    2001_Programming Web Services with XML-RPC

    XML-RPC(XML Remote Procedure Call)是一种轻量级的协议,用于实现不同应用程序之间的远程过程调用。它通过HTTP协议传输XML格式的数据,在客户端和服务端之间交换信息。XML-RPC能够跨平台、跨语言地工作,支持多种...

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

    - XML-RPC使用HTTP作为传输协议,XML作为数据格式,实现了简单且灵活的远程调用机制。 - 客户端发送一个XML文档,包含要调用的函数名和参数,服务器解析请求并执行相应的函数,然后返回一个XML响应。 2. **Delphi...

    java delphi 互相调用 xml-rpc实例

    XML-RPC(XML Remote Procedure Call)是一种轻量级的远程过程调用协议,它允许不同编程语言编写的系统之间进行通信。在这个实例中,我们将探讨如何使用XML-RPC实现Java与Delphi之间的互相调用,以及提供的源码和可...

    xml_rpc需要的jar包

    总的来说,XML-RPC是一种简单、轻量级的远程调用技术,适合于那些不需要复杂交互和高性能需求的分布式应用。这些jar包的组合为Java开发者提供了构建XML-RPC应用程序的基础框架和工具。在实际应用中,还需要考虑错误...

Global site tag (gtag.js) - Google Analytics