`
yaozhiqiang109
  • 浏览: 117558 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

xml-rpc 2.0和3.0实例

    博客分类:
  • RPC
阅读更多

xml-rpc 2.0介绍:
1、运行在不同操作系统、不同环境
2、使用http作为传输协议
3、xml作为传送信息的编码格式


xml-rpc是一种简单的,轻量级的通过HTTP协议进行RPC通信的规范。一个xml-rpc消息就是一个请求
体为xml的HTTP-POST请求,被调用的方法在服务器端执行并将执行结果以xml格式编码后返回。

xml-rpc 2.0实例:

服务端类

public class MyXmlRpcServer extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        XmlRpcServer xmlRpc=new XmlRpcServer();
        xmlRpc.addHandler("myHandler", new MyHandler());
        byte [] result=xmlRpc.execute(req.getInputStream());
        resp.setContentType("text/xml");
        resp.setContentLength(result.length);
        OutputStream outputStream=resp.getOutputStream();
        outputStream.write(result);
        outputStream.flush();
        outputStream.close();
    }  

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doGet(req, resp);
    }

  
}
 



配置

<servlet>
        <servlet-name>MyXmlRpcServer</servlet-name>
        <servlet-class>xiu.rpc.MyXmlRpcServer</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyXmlRpcServer</servlet-name>
        <url-pattern>/MyXmlRpcServer</url-pattern>
    </servlet-mapping>
 



测试

public class MyXmlRpcClient {

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            XmlRpcClient xmlrpc = new XmlRpcClient("http://127.0.0.1:8080/rpc/MyXmlRpcServer");
            Vector params = new Vector();
            params.addElement("Tom");
            String result = (String) xmlrpc.execute("myHandler.sayHello",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();
        }

    }

}
 



rpc 3.0 写servlet

实例:

public class HelloHandler {

	public String sayHello(String str){
		return str;
	}
}
 

服务:

public class Server extends HttpServlet {

	private XmlRpcServletServer xmlRpc;
	
	public void init(ServletConfig config)throws ServletException{
		super.init(config);
		xmlRpc=new XmlRpcServletServer();
		PropertyHandlerMapping phm=new PropertyHandlerMapping();
		try {
			phm.addHandler("HelloHandler", xiu.com.HelloHandler.class);
			xmlRpc.setHandlerMapping(phm);
			XmlRpcServerConfigImpl serverConfig=(XmlRpcServerConfigImpl)xmlRpc.getConfig();
			serverConfig.setEnabledForExtensions(true);
			serverConfig.setContentLengthOptional(false);
		} catch (XmlRpcException e) {
			e.printStackTrace();
		}
	}

	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		xmlRpc.execute(req, resp);
	}
	
	
}

 

测试:

public class xmlRpcClient {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		XmlRpcClientConfigImpl config=new XmlRpcClientConfigImpl();
		try {
			config.setServerURL(new URL("http://127.0.0.1:8080/rpc3/xmlrpc"));
			XmlRpcClient client=new XmlRpcClient();
			client.setConfig(config);
			Vector<String> param=new Vector<String>();
			param.add("tom");
			String result=(String) client.execute("HelloHandler.sayHello", param);
			System.out.println("result:"+result);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (XmlRpcException e) {
			e.printStackTrace();
		}
		
	}

}
 

 

<servlet>
        <servlet-name>XmlRpcServer</servlet-name>
        <servlet-class>xiu.rpc.Server</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>XmlRpcServer</servlet-name>
        <url-pattern>/sayHello</url-pattern>
    </servlet-mapping>
 


rpc 3.0 不写servlet,用属性文件来配置javabean

1、创建javabean

2、配置javabean

3、client调用

rpc 3.0 通过属性文件来配置服务,还是很方便的

 

分享到:
评论

相关推荐

    xml-rpc.net.3.0

    xml-rpc.net.3.0.0.270-snapshot,用于c#访问解析XML-RPC

    XML-RPC.rar_HTTP协议_XML-R_XML-RPC _xml rpc

    简单介绍了XML-RPC这种通过HTTP协议进行RPC通信的规范。 以Apache XML-RPC 3.0为基础,对XML-RPC的基本原理及Apache XML-RPC 3.0的主要特性进行了讨论和分析

    xml-rpc学习心得

    xml-rpc 学习心得是我自己的学习心得体会。

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

    3.0 XML-RPC

    axml-2.0.jar

    axml-2.0.jaraxml-2.0.jaraxml-2.0.jaraxml-2.0.jaraxml-2.0.jaraxml-2.0.jar

    Apache xml-rpc入门

    Apache xml-rpc入门详细的描述xmlrpc的开发过程,并带有例子。

    XML-RPC客户端程序

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

    xml-rpc.net.2.4.0.zip

    Version 2.4.0 has been released: xml-rpc.net.2.4.0.zip New feature and fixed issues: New StructParams property on XmlRpcMethodAttribute which provides supports for APIs which use a struct to ...

    php xml-rpc 协议 非常有用哦

    XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用。  它是一套允许运行在不同操作系统、不同环境的程序实现基于Internet过程调用的规范和一系列的实现。

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

    我自己动手写的XML-RPC,最近自己写了写关于大规模分布式只是学习的实验,其中用到了python里面的清凉级

    apache XML-RPC 实现

    commons-logging-1.1.jar ws-commons-util-1.0.2.jar xmlrpc-client-3.1.3.jar xmlrpc-common-3.1.3.jar xmlrpc-server-3.1.3.jar

    LabVIEW XML-RPC

    LabVIEW 版 XML_RPC,有7.1,8.0,8.5三个版本。

    xml-jar-2.0.jar

    xml-jar-2.0.jarxml-jar-

    spring-boot2.0全新教程实例20例.zip

    spring-boot2.0全新教程实例20例.zip - [spring-boot-helloWorld](https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-helloWorld):Spring Boot 的 hello World 版本 - [spring-boot-...

    struts-2.0.dtdstruts-2.0.dtdstruts-2.0.dtd

    struts-2.0.dtdstruts.xmlstruts-2.0.dtd

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

    简单对象访问协议(Simple Object Access Protocol,SOAP)、代表性状态传输(Representational State Transfer,REST)以及 XML 远程过程调用协议(XML Remote Procedure Call,XML-RPC)等 Web 服务协议可帮助将...

    xml-rpc.js:跨域 JavaScript 的 XML-RPC 库

    允许在与原始 Web 服务器不同的域和/或端口上的服务器上使用 XML-RPC。限制在这个阶段,库依赖同步 AJAX 调用来允许完全透明的方法调用。 将来,将有一个选项可以返回 JS Promise 对象而不是结果,并使用异步 AJAX ...

    xml-rpc协议资料

    xml-rpc 是一套规范及其一系列的实现,允许运行在不同操作系统、不同环境的程序基于internet进行远程过程调用。  这种远程过程调用使用http作为传输协议,xml作为传送信息的编码格式。Xml-Rpc的定义尽可能的保持了...

    解决Delphi XML-RPC 中文乱码

    此资源不要下载,请下载最新的 最近要用XML-RPC机制实现...下载Delphi XML-RPC 后发现中文字符串会出现乱码,跟踪代码后发现XML-RPC默认的 字符编码是UTF-8,而且QT也都是用UTF-8编程,故把传输字符串改为UTF-8就行了,

    Delphi XML-RPC 中文乱码解决方法

    最近要用XML-RPC机制实现delphi程序与Qt程序之间的通信,从开源网站http://sourceforge.net/projects/delphixml-rpc/下载Delphi XML-RPC 后发现中文字符串会出现乱码,跟踪代码后发现XML-RPC默认的字符编码是UTF-8,...

Global site tag (gtag.js) - Google Analytics