将 Apache xmlrpc 从 2.0.1 迁移到 3.1.3 - 如何处理 SecureWebServer 和相关 API 的删除?

Migrating Apache xmlrpc from 2.0.1 to 3.1.3 - How to deal with the removal of the SecureWebServer and related APIs?

我正在将 java xmlrpc 从 2.0.1(组织:xmlrpc;模块:xmlrpc)升级到 3.1.3(组织:org.apache.xmlrpc;模块:xmlrpc-client、xmlrpc-server , xmlrpc-commons) 准备迁移到 JDK 11. 因为这个项目已经被拆分为客户端和服务器的单独模块,所以我必须修复大约三打编译错误。其中大部分都不是大问题。但是,我 运行 遇到了一些障碍,因为有许多 class 与安全 XMLRPC 连接相关的内容已在 3.0 版中删除:

org.apache.xmlrpc.secure.SecureWebServer; // including setParanoid(boolean), acceptClient(String) and addHandler(string, Handler)
org.apache.xmlrpc.AuthenticatedXmlRpcHandler;
org.apache.xmlrpc.secure.SecureXmlRpcClient; // including setBasicAuthentication(username, password)

我们通过以下方式使用它们:

我试图找到从 2.X 版本迁移到 3.X 版本的迁移指南,虽然 XMLRPC 上的 Apache 站点在某种程度上确实包含解释,但它与迁移指南。据我所知,您现在应该使用配置 class?这有点令人困惑,我想知道是否仍然有必要使用单独的安全和不安全 classes。

以上内容可能比问题所需的更详细,问题是:如何处理在 XMLRPC 3.0 中删除单独的服务器和客户端以进行安全的 xmlrpc 调用?比如,我是否仍然需要在代码中创建单独的安全和不安全的客户端和服务器,或者现在一切都可以使用默认的 XMLRPC 服务器和客户端,安全和不安全的服务器和客户端之间没有区别吗?

Like, do I still need to create separate secure and insecure clients and servers in code, or can everything now use the default XMLRPC server and client with no differentiation between secure and insecure servers and clients?

是的,您仍然需要单独的实现。在 3.x 中,由客户提供安全设置。

有几种方法

在服务器端,您需要重写 createServerSocket 以替代类似于 2.x 的安全 SSLServerSocket。

在客户端,您已使用 XmlRpcCommonsTransportFactory 上的 SSLServerSocketFactory 进行初始化以创建 ssl 工厂。 可以使用 XmlRpcHttpClientConfig 配置基本身份验证。

或者在服务器端,您可以使用完整的 servlet 容器,例如 tomcat 或带有自己的 ssl 工厂的码头。

对于客户端,您可以使用 Httpcient 来覆盖 ssl。

您可以找到有关如何配置 XmlRpcServlet 和客户端的一些详细信息

https://ws.apache.org/xmlrpc/server.html

https://ws.apache.org/xmlrpc/client.html