`

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
分享到:
评论

相关推荐

    java rest api入门实例

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

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

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    ZendFramework中文文档

    5.4. Zend_Config_Xml 6. Zend_Console_Getopt 6.1. Getopt 简介 6.2. 声明 Getopt 规则 6.2.1. 用短语法声明选项 6.2.2. 用长语法声明选项 6.3. 读取(Fetching)选项和参数 6.3.1. 操作 Getopt 异常 6.3.2...

    python入门到高级全栈工程师培训 第3期 附课件代码

    python入门到高级全栈工程师培训视频学习资料;本资料仅用于学习,请查看后24小时之内删除。 【课程内容】 第1章 01 计算机发展史 02 计算机系统 03 小结 04 数据的概念 05 进制转换 06 原码补码反码 07 物理层和...

    Java数据编程指南

    案例分析 第25章 案例分析:XML网站入口 案例分析综述 XML-Client应用程序 XML跳过HTTP&lt;br&gt;配置 开始应用程序服务器 XML-RPC 小结 第26章 案例分析:网站通信量的统计分析 案例分析综述...

    java开源包1

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包2

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包3

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包6

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包5

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包10

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包8

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包7

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包9

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包11

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包4

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包101

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

Global site tag (gtag.js) - Google Analytics