`

XML_RPC简单实例(入门)

阅读更多
最来研究XML_RPC的使用,网络上比较少,找了很久才在csdn找到一篇比较适用的文章。不过那篇文章也就介绍XML_RPC的简单使用例子,没有用户验证。经过查看官网和尝试,终于把用户验证功能做出来了,这篇只介绍普通例子,用户验证下篇讲述。希望对需要学习的javaeye同仁和广大网友有所帮助。我这里使用的是XML_RPC3.1.3,附带jar文件。

XML-RPC参数类型标签如下表:
Tag                 Java Type             说明

<i4> or <int>      Integer/int            4字节带符号整数值
<boolean>          Boolean                0 (false) or 1 (true)
<string>           String                 字符串
<double>           Double                 双精度带符号浮点值
<dateTime.iso8601> java.util.Date         日期/时间
<base64>           byte[]                 base64编码的二进制数据
<struct>           java.util.Map          键值对,键为String类型,而值为任意有效类型
<array>            Object[]
                   java.util.List         对象数组

Server端:
创建一个web工程,导入除client以外的4个jar包

业务功能类:
package demo.xmlrpc.action;

public class Calculator {
    public int add(int i1, int i2) {
            return i1 + i2;
    }
    public int subtract(int i1, int i2) {
            return i1 - i2;
    }
}


服务控制Servlet:
package demo.xmlrpc;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.server.PropertyHandlerMapping;
import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
import org.apache.xmlrpc.webserver.XmlRpcServletServer;

import demo.xmlrpc.action.Calculator;
import demo.xmlrpc.action.HelloHandlerImpl;

public class Server extends HttpServlet {

	private static final long serialVersionUID = 1L;
	private XmlRpcServletServer server;

      public void init(ServletConfig pConfig) throws ServletException {
            super.init(pConfig);
            try {
                  // 创建一个XmlRpcServletServer对象
                  server = new XmlRpcServletServer();
                  
                  //设置XmlRpcServletServer对象的映射接收器
                  PropertyHandlerMapping phm = new PropertyHandlerMapping();
                  phm.addHandler("HelloHandler", HelloHandlerImpl.class);
                  phm.addHandler("Calculator", Calculator.class);
                
                  server.setHandlerMapping(phm);
                  // XmlRpcServletServer对象的其他设置     
                  XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl)server.getConfig();
                  serverConfig.setEnabledForExtensions(true);
                  serverConfig.setContentLengthOptional(false);
            } catch (XmlRpcException e) {
                  try {
                        log("Failed to create XmlRpcServer: " + e.getMessage(), e);
                  } catch (Throwable ignore) {
                  }
                  throw new ServletException(e);
            }
      }

      public void doPost(HttpServletRequest pRequest, HttpServletResponse pResponse)
            throws IOException, ServletException {
            server.execute(pRequest, pResponse);
      }

}



在web.xml文件添加如下内容:


 <servlet>
		<servlet-name>XmlRpcServer</servlet-name>
		<servlet-class>demo.xmlrpc.Server</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>XmlRpcServer</servlet-name>
		<url-pattern>/XmlRpcServer</url-pattern>
	</servlet-mapping>



创建一个包,里面添加一个配置文件,名字如下。两个名字一定不能变,这很雷人的,

框架规定的。

包名:org.apache.xmlrpc.webserver

文件名为:XmlRpcServlet.properties

文件内容为:Calculator=demo.xmlrpc.action.Calculator

Client端:
创建一个普通工程,导入除server以外的4个jar包

远程客户调用类:
package demo.xmlrpc;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Vector;

import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

public class Client1 {

	public static void main(String[] args) {

		try {
			// 客户端配置对象,并且设置用户名密码
			XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
			config.setServerURL(new URL(
"http://192.168.1.217:8080/XML_RPC/XmlRpcServer")); //需要根据自己的具体情况修改url

			//创建一个XmlRpcClient对象,并给它绑定一个配置对象
			XmlRpcClient client = new XmlRpcClient();
			client.setConfig(config);
			
			// 创建参数集合			
			Vector<Integer> params= new Vector<Integer>();
			params.addElement(3);
			params.addElement(8);
			Integer result=(Integer)client.execute("Calculator.add",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();
		}

	}

}




部署启动Server端的web工程,运行Client端的程序。返回结果为11。

参考:http://blog.csdn.net/billdavid/archive/2006/08/18/1095747.aspx
1
4
分享到:
评论

相关推荐

    Apache xml-rpc入门

    ### Apache XML-RPC 入门知识点详解 #### 一、XML-RPC 概念与应用场景 **XML-RPC(XML Remote Procedure Call)**是一种轻量级的远程过程调用协议,它允许在不同操作系统和语言环境之间进行数据交换。XML-RPC 使用...

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

    在这个入门教程中,我们将探讨如何在Java环境中使用Apache XML-RPC创建一个简单的Servlet服务,并启动服务器线程。 首先,我们需要了解XML-RPC的基本原理。在XML-RPC中,客户端发送一个包含方法名和参数的XML请求到...

    XML入门经典(Begining XML) 第5版 源代码

    XML(eXtensible Markup Language)是一种用于标记数据的语言,其设计目的是传输和存储数据,而非显示数据。...这不仅有助于你提升XML处理能力,也有利于你理解其他基于XML的技术,如XML数据库、XML-RPC等。

    手把手xfire开发WS入门实例

    总结来说,"手把手xfire开发WS入门实例"涉及到的知识点涵盖了Web Service的基本概念、核心协议(SOAP和WSDL)、选择Web Service通信方式的比较、开发工具和框架(XFire和Axis),以及相关技术与SOA架构。通过学习...

    java rest api入门实例

    目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找...

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

    本文将深入探讨Axis2 1.4.1版本的经典入门实例,通过Eclipse集成开发环境中的Axis2插件,帮助你快速理解和应用这一强大的Web服务工具。 一、Apache Axis2概述 Apache Axis2是Apache SOAP(Simple Object Access ...

    Dubbo入门实例Demo

    【Dubbo入门实例Demo】是针对初学者设计的一个实践教程,旨在帮助新手快速理解并掌握Apache Dubbo这一高性能、轻量级的Java RPC框架。在学习过程中,新手往往会在配置、依赖、通信等方面遇到诸多问题,这个Demo就是...

    WebService&SOA&ESB入门介绍(手把手xfire开发WS入门实例)

    XML-RPC(XML Remote Procedure Call)是另一种简单的方法,通过XML来实现远程过程调用,比REST更复杂,但比SOAP简单。 【Data Binding】 数据绑定是将业务对象和网络消息之间自动映射的过程,使得程序可以方便地...

    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 服务 等等其他协议

    轻量级远程服务调用Hessian的入门实例和与Spring整合的实例.zip

    Hessian的入门实例主要展示了如何创建一个简单的服务提供者和消费者。首先,我们需要定义一个服务接口,例如`HelloService`,包含一个或多个方法,这些方法将被远程调用。然后,我们需要实现这个接口并部署为一个...

    EJB入门实例

    在提供的"myname"文件中,可能包含了一个简单的EJB入门项目,可能包括源代码、部署描述符文件以及如何构建和运行该项目的说明。你可以通过阅读源代码了解bean的实现,查看ejb-jar.xml了解配置细节,并参照文档学习...

    hessian入门实例,导入就可以直接运行

    这个"**hessian入门实例**"旨在帮助初学者快速理解并应用Hessian技术,通过导入到MyEclipse这样的集成开发环境中,可以直接运行示例代码,从而直观地了解Hessian的工作原理。 首先,我们要理解什么是RPC。RPC允许一...

    GWT入门与经典实例解析源码

    GWT入门与经典实例解析源码提供了一个学习和实践GWT开发的宝贵资源,下面将详细介绍GWT的关键概念、核心特性以及通过实例解析来深入理解其工作原理。 1. **GWT的安装与设置**: 在开始GWT项目之前,你需要安装Java...

    Web Servies Essentials.pdf

    - **2.5 超越简单调用**:探讨了如何利用XML-RPC实现更复杂的功能。 - **第三部分:SOAP** - **第3章 SOAP基础** - **3.1 SOAP入门**:概述了SOAP的基本概念和发展历程。 - **3.2 SOAP消息**:详细解释了SOAP...

    Dubbo新手入门实例HelloWorld(zookeeper)源码

    【Dubbo新手入门实例HelloWorld(zookeeper)源码】是一个针对初学者的教程,旨在帮助初次接触Dubbo框架的人理解其基本概念和运作方式,并通过整合Zookeeper作为注册中心来实现服务的发现与调用。这个实例将涵盖以下几...

    一个简单的gsoap实例

    总的来说,gSOAP实例展示了如何使用gSOAP库在Linux环境中创建一个简单的SOAP服务,包括服务接口定义、工具使用、服务端和客户端的基本操作。理解这个例子有助于开发者快速入门gSOAP,进而开发更复杂的Web服务应用。

    Dubbo新手入门实例HelloWorld(zookeeper)源码低分版

    Dubbo新手入门实例“HelloWorld”是初学者学习分布式服务框架Dubbo的典型起点。这个实例结合了Zookeeper作为注册中心,帮助理解Dubbo的基本工作原理。以下将详细讲解涉及的知识点。 首先,Dubbo是一个高性能、轻量...

    xfire实现web service入门实例

    Web服务是一种基于网络...这个"HelloWorld"实例就是一个很好的起点,它展示了如何从头开始创建一个简单的Web服务。随着对Xfire的深入理解和实践,你可以处理更复杂的服务,包括数据绑定、安全性和事务管理等高级特性。

Global site tag (gtag.js) - Google Analytics