将 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)
我们通过以下方式使用它们:
- 我们有一个从 Apache SecureWebServer 扩展而来的 SecureWebServer class,但我不知道我们是否需要它了,因为看起来我们覆盖它的唯一原因是为了改进关闭逻辑,这似乎已在 3.1.3 版本中得到改进。
- 我们有一个从 AuthenticatedXmlRpcHandler 扩展而来的自定义处理程序 class。此处理程序使用自定义 ValueProvider 来处理与时间戳和 2.0.1 中不支持的其他类型相关的附加逻辑。我也不知道我们是否还需要这个 ValueProvider。
- 我们有一个 client/server 架构,允许我们的用户有选择地加密服务器和客户端之间的通信。因此,如果需要,我们有一堆逻辑来配置 SecureXmlRpcClient。
我试图找到从 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 和客户端的一些详细信息
我正在将 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)
我们通过以下方式使用它们:
- 我们有一个从 Apache SecureWebServer 扩展而来的 SecureWebServer class,但我不知道我们是否需要它了,因为看起来我们覆盖它的唯一原因是为了改进关闭逻辑,这似乎已在 3.1.3 版本中得到改进。
- 我们有一个从 AuthenticatedXmlRpcHandler 扩展而来的自定义处理程序 class。此处理程序使用自定义 ValueProvider 来处理与时间戳和 2.0.1 中不支持的其他类型相关的附加逻辑。我也不知道我们是否还需要这个 ValueProvider。
- 我们有一个 client/server 架构,允许我们的用户有选择地加密服务器和客户端之间的通信。因此,如果需要,我们有一堆逻辑来配置 SecureXmlRpcClient。
我试图找到从 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 和客户端的一些详细信息