JAX-RPC 转换工具的验证已确定此扫描中的 JAX-RPC Web Service 是使用 JAX-RPC 转换工具将二进制转换为 JAX-WS 的理想候选项。
此规则将标记是否使用了任何特定于 JAX-RPC 的包和配置文件。 并且,此规则还将标记在 XML 映射文件中是否使用了任何 jaxrpc-mapping-file 标记。 下表列出了受此规则影响的 Java 包、配置文件和 XML 映射文件:
包 |
配置文件 |
XML 映射文件 |
|---|---|---|
|
|
|
针对基于 XML 的 RPC 的 Java API (JAX-RPC) 在 Liberty 或 Liberty Core 上不受支持。 此技术在 WebSphere Application Server Traditional V9.0 中不推荐使用,并且可能会在更高版本中移除。 战略迁移路径将使用 JAX-WS。 相对工作量将根据选择的迁移路径而改变:
下表根据可能影响您项目的因素对四个选项进行了比较。
项目因素 |
选项 1使用 JAX-RPC 转换工具将 JAX-RPC Web Service 迁移到 JAX-WS Web Service |
选项 2手动将 JAX-RPC Web Service 迁移到 JAX-WS Web Service |
选项 3在 Liberty 上使用 Apache Axis 1 JAX-RPC 引擎 |
选项 4将 WebSphere Application Server Traditional 与其本机 JAX-RPC 引擎一起使用 |
|---|---|---|---|---|
|
支持的解决方案 |
是 JAX-WS 作为可配置功能部件 在除 Liberty Core 之外的所有 Liberty 版本上受支持。 下载 WebSphere Liberty 用于 Maven 和 Gradle 的 JAX-RPC 转换工具。 |
是 JAX-WS 作为可配置功能部件 在除 Liberty Core 之外的所有 Liberty 版本上受支持。 |
否 Axis 1 不受支持。 |
是 JAX-RPC 在 WebSphere Application Server Traditional 上受支持。 |
|
战略性解决方案 |
是 JAX-WS 对于除 Liberty Core 之外的所有 Liberty 版本都是战略性的。 |
是 JAX-WS 对于除 Liberty Core 之外的所有 Liberty 版本都是战略性的。 |
否 Axis 1 已不再进行后续开发。 |
否 JAX-RPC 在 WebSphere Application Server Traditional 中不推荐使用,并且可能会在更高版本中移除。 |
|
实现复杂性 |
低 已验证应用程序是否使用了 JAX-RPC 转换工具。 可以通过该工具将 JAX-RPC 服务转换为 JAX-WS Web Service。 |
高 该选项对于大量 JAX-RPC 客户机和 Web Service 可能比较复杂。 如果不使用 JAX-RPC 转换工具将 JAX-RPC 服务移植到 JAX-WS,那么需要对代码库进行许多更改。 |
低 如果应用程序已在使用 Axis 1,那么该选项并不复杂。 否则,该选项的复杂性为中。 |
中 将 JAX-RPC Web Service 迁移到其他引擎将保留代码库的大部分内容。 |
|
高级功能 |
是 JAX-WS 提供许多高级功能,例如,注释、JAXB 绑定和 SOAP 1.2。 |
是 JAX-WS 提供许多高级功能,例如,注释、JAXB 绑定和 SOAP 1.2。 |
否 JAX-RPC 缺少 JAX-WS 中的许多高级功能。 |
否 JAX-RPC 缺少 JAX-WS 中的许多高级功能。 |
|
规范合规性 |
是 |
是 |
是 虽然 JAX-RPC 仍是 Java EE 规范的一部分,但对于 Jave EE 6 已不推荐使用。 |
是 虽然 JAX-RPC 仍是 Java EE 规范的一部分,但对于 Jave EE 6 已不推荐使用。 |
|
建议 |
如果应用程序符合 JAX-RPC 转换工具的要求,请使用此选项。 |
如果您有一些 JAX-RPC Web Service,并且应用程序不符合 JAX-RPC 转换工具的要求,请使用此选项。 |
如果您的 JAX-RPC Web Service 已在 Axis 1 上运行,请使用此选项。 |
如果您的 JAX-RPC Web Service 已在 WebSphere Application Server Traditional 上运行,或者如果您有许多尚未在 Axis 1 上运行的 JAX-RPC Web Service,请使用此选项。 |
从 WebSphere Liberty 用于 Maven 和 Gradle 的 JAX-RPC 转换工具下载 JAX-RPC 转换工具。
有关使用 JAX-RPC 转换工具将应用程序从 JAX-RPC 迁移至 JAX-WS 的信息,请参阅联机文档中的 使用 Maven 将 JAX-RPC 应用程序迁移到 Liberty 或 使用 Gradle 将 JAX-RPC 应用程序迁移至 Liberty。
有关将应用程序从 JAX-RPC 迁移到 JAX-WS 的信息,请参阅联机文档中的 Web Service 迁移方案:JAX-RPC 到 JAX-WS 和 JAXB。
有关 JAX-RPC 与 JAX-WS 之间的差别的更多信息,请参阅 JAX-WS 应用程序部署模型。
如果您已使用 Axis 1,那么要在 Liberty 上使用 Axis 1,必须在 Liberty 类路径中包含 Axis 1 库。
如果使用嵌入式 JAX-RPC,那么可以转换 Web Service 以使用 Axis 1。 以下过程描述了如何将 Web Service 从 Red Hat JBoss 迁移到 Axis 1。
java -cp <AXIS LIBRARIES> org.apache.axis.wsdl.WSDL2Java -t java -cp <AXIS LIBRARIES> org.apache.axis.wsdl.WSDL2Java -t -s -o <Output directory> <WSDL file>
有关此命令的更多信息,请参阅 Apache Web 站点上的 WSDL2Java 参考。
有关 WSDD 配置元素的更多信息,请参阅 Apache Web 站点上的 部署 (WSDD) 参考。
例如,以下方法具有 JNDI 查找:
必须替换此查找:
private com.ibm.demo.webservices.server.DemoType getService() throws Exception {如果您要使用 WebSphere Application Server JAX-RPC 引擎,那么必须使用 WebSphere Application Server Traditional。 Liberty 不支持 JAX-RPC。 如果您要使用 Liberty,那么必须选择其他某个选项。
如果检测到 JAX-RPC 配置文件,但是未检测到此应用程序中使用了 JAX-RPC Java API,那么这些配置文件可能来自先前使用但不再需要的 JAX-RPC 技术。 可以移除未使用的配置。