Apache XML-RPC 是一个已停止维护的轻量级纯 Java XML-RPC 库,最新版 3.1.3 发布于 2009 年,仅建议用于遗留系统;支持 JDK 1.4+,兼容现代 JDK,但不推荐新项目使用。
Apache XML-RPC 是一个轻量级、纯 Java 实现的 XML-RPC 协议客户端与服务器端库,适合在简单远程调用场景中快速集成。它不依赖 Servlet 容器,可嵌入任意 Java 应用,但已停止维护(最新稳定版为 3.1.3,发布于 2009 年),仅建议用于遗留系统或低复杂度内部工具。
使用 Maven 管理依赖时,在 pom.xml 中加入:
xmlrpc-client
如需搭建服务端,还需添加 xmlrpc-server 和 xmlrpc-common 依赖。注意:3.x 版本要求 JDK 1.4+,与现代 JDK(如 17+)兼容性良好,但需避免在新项目中引入。
XML-RPC 调用本质是发送 HTTP POST 请求,参数和返回值自动序列化为 XML。基本步骤如下:
http://localhost:8080/RPC2)示例:调用远程 sample.add 方法计算两数之和:
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL("http://localhost:8080/RPC2"));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
Object result = client.execute("sample.add", new Object[]{5, 3});
int sum = ((Number) result).intValue(); // 返回值通常是 Number 子类
服务端需注册处理类并启动 HTTP 服务器(推荐使用内置的 Jetty 或外置容器):
sample.)映射到该类
若使用 Jetty 内嵌(xmlrpc-server 自带支持):
XmlRpcServer server = new XmlRpcServer();
PropertyHandlerMapping phm = new PropertyHandlerMapping();
phm.load(Thread.currentThread().getContextClassLoader(), "handler.properties");
// 或直接注册:phm.addHandler("sample", Calculator.class);
server.setHandlerMapping(phm);
JettyWebServer jetty = new JettyWebServer(8080, server);
jetty.start();
该库对数据类型支持有限,易出错点集中在:
setEncoding("UTF-8"))不复杂但容易忽略。