java实现xml-rpc客户端和服务端

时间:2022-10-03 21:11:13

客户端代码:

package test_xmlrpc.test;

import java.net.URL;
import java.util.ArrayList;
import java.util.List;

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

public class RpcClient {
    public static void main(String[] args) throws Exception {
        // 实例化一个客户端配置对象 XmlRpcClientConfigImpl config,为该实例指定服务端 URL 属性
        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
        config.setServerURL(new URL("http://127.0.0.1:8005/xmlrpc"));
        
        //创建 XmlRpcClient 对象,为其指定配置对象
        XmlRpcClient client = new XmlRpcClient();
        client.setConfig(config);

// 创建参数数组
        List<String> list = new ArrayList<String>();
        list.add("xx");
        list.add("hello");

// 调用服务器端方法“Hello”
        String result = (String) client.execute("HelloHandler.Hello", list);
        System.out.println(result);
    }
}

服务端代码:

package test_xmlrpc.test;

import org.apache.xmlrpc.server.PropertyHandlerMapping;
import org.apache.xmlrpc.server.XmlRpcServer;
import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
import org.apache.xmlrpc.webserver.WebServer;

public class RpcServer {
    private static final int port = 8005;

public static void main(String[] args) throws Exception {
        WebServer webServer = new WebServer(port);

// XmlRpcServer 对象用于接收并执行来自客户端的 XML-RPC 调用
        XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();
        PropertyHandlerMapping phm = new PropertyHandlerMapping();
        phm.addHandler("HelloHandler", HelloHandler.class);
        xmlRpcServer.setHandlerMapping(phm);
        XmlRpcServerConfigImpl config = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();

// enabledForExtensions: 指定是否启用 Apache 对 XML-RPC 的扩展。
        config.setEnabledForExtensions(true);
        config.setContentLengthOptional(false);
        webServer.start();
    }
}

HelloHandler类:

package test_xmlrpc.test;

public class HelloHandler {
    public String Hello(String name,String word){
        return name+word;
    }

}

附详解链接:XML-RPC 的 Apache 实现

java实现xml-rpc客户端和服务端的更多相关文章

  1. java Socket通信,客户端与服务端相互发消息

    1.通信过程 网络分为应用层,http.ssh.telnet就是属于这一类,建立在传输层的基础上.其实就是定义了各自的编码解码格式,分层如下: 2.Socket连接 上述通信都要先在传输层有建立连接的 ...

  2. 实验09——java基于TCP实现客户端与服务端通信

    TCP通信         需要先创建连接 - 并且在创建连接的过程中 需要经过三次握手        底层通过 流 发送数据 数据没有大小限制        可靠的传输机制 - 丢包重发 包的顺序的 ...

  3. 编写Java程序,应用客户端和服务端通过 Eclipse 控制台的输入和显示实现简易的聊天功能

    查看本章节 查看作业目录 需求说明: 应用客户端和服务端通过 Eclipse 控制台的输入和显示实现简易的聊天功能 实现思路: 创建 Java 项目,在项目中创建服务端类 ChatServerThre ...

  4. 编写Java程序,实现客户端向服务端上传文件的功能

    查看本章节 查看作业目录 需求说明: 实现客户端向服务端上传文件的功能 当启动服务端后,运行客户端程序,系统提示客户在客户端输入上传文件的完整路径.当客户在客户端输入完成后,服务端实现文件上传 实现思 ...

  5. 用JAVA分别实现WebSocket客户端与服务端

    最近公司在搞一个项目刚好需要用到WebSocket技术来实现实时数据的传输,因为之前也没接触过,所以捣鼓了好些天,最近恰巧有空就写写.有误的地方还请大牛们能及时指正. 项目背景:基于spring+sp ...

  6. java 从零开始手写 RPC &lpar;03&rpar; 如何实现客户端调用服务端?

    说明 java 从零开始手写 RPC (01) 基于 socket 实现 java 从零开始手写 RPC (02)-netty4 实现客户端和服务端 写完了客户端和服务端,那么如何实现客户端和服务端的 ...

  7. java网络编程客户端与服务端原理以及用URL解析HTTP协议

    常见客户端与服务端 客户端: 浏览器:IE 服务端: 服务器:web服务器(Tomcat),存储服务器,数据库服务器. (注:会用到Tomact服务器,在webapps下有一个自己创建的目录myweb ...

  8. &lbrack;Java&rsqb;Hessian客户端和服务端代码例子

    简要说明:这是一个比较简单的hessian客户端和服务端,主要实现从客户端发送指定的数据量到服务端,然后服务端在将接收到的数据原封不动返回到客户端.设计该hessian客户端和服务端的初衷是为了做一个 ...

  9. Java实现UDP之Echo客户端和服务端

    Java实现UDP之Echo客户端和服务端 代码内容 采用UDP协议编写服务器端代码(端口任意) 编写客户机的代码访问该端口 客户机按行输入 服务器将收到的字符流和接收到的时间输出在服务器consol ...

  10. Java实现TCP之Echo客户端和服务端

    Java实现TCP之Echo客户端和服务端 代码内容 采用TCP协议编写服务器端代码(端口任意) 编写客户机的代码访问该端口 客户机按行输入 服务器将收到的字符流和接收到的时间输出在服务器consol ...

随机推荐

  1. MySQL主从问题

    Mysql数据库主从心得整理      管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本的主从,本博文属于总结性的,有一部分是摘自网络,大部分是根据自己管理的心得和经验 ...

  2. TextureView&plus;SurfaceTexture&plus;OpenGL ES来播放视频(二)

    引自:http://www.jianshu.com/p/b2d949ab1a1a 在使用OpenGL ES 绘制前,我先概括下接下来要做的工作:我先借用一个博主kiffa举的的一个栗子,我觉得说的恰到 ...

  3. Java解析表达式

    需求 思路 总结 需求 指定一个String表达式,表达式符合给出的运算符规范,比如:2!=2 and 2>=3 or 4<=4,计算出表达式的结果(true or false). 支持的 ...

  4. SparkException&colon; Could not find CoarseGrainedScheduler or it has been stopped&period;

    org.apache.spark.SparkException: Could not find CoarseGrainedScheduler or it has been stopped. at or ...

  5. squid代理

    概念    高性能dialing服务软件,作为前置缓存服务,用于替代用户向网站服务器请求页面数据并进行缓存.    默认占用端口3128.3401.4827    分类    从作用分类       ...

  6. ccf--20151203--画图

    本题思路如下: 题目和代码如下: 问题描述 试题编号: 201512-3 试题名称: 画图 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 用 ASCII 字符来画图是一件有趣 ...

  7. python -- 判断给定的参数是否是地理位置的经度和纬度

    例子: coordinates = "2.3,-8ui" 无效地理位置 coordinates = "2.3,-8i" 有效地理位置 方法一:使用try...e ...

  8. zabbix fast

    源码安装步骤 来源它站: 官方文档:https://www.zabbix.com/documentation/2.4/manual/installation/install#from_the_sour ...

  9. 在activity之间通过静态变量传递数据

    在activity之间通过静态变量传递数据 一.简介 主要作用:解决intent不能传递非序列化的对象 评价:简单方便,但是容易发生内存泄露,所以要及时回收内存 二.具体操作 1.在传输数据的页面弄好 ...

  10. Redis-cluster详解

    redis集群结构 特点:     1 所有redis节点(包括主和从)彼此互联(两两通信),底层使用内部的二进制传输协议,优化传输速度;(所有功能特点的基础)    2 集群中也有主从,也有高可用的 ...