JAX-RPC - JAX-RPC 转换工具的无效候选项

此规则将标记是否使用了任何特定于 JAX-RPC 的包和配置文件。 并且,此规则还将标记在 XML 映射文件中是否使用了任何 jaxrpc-mapping-file 标记。 下表列出了受此规则影响的 Java 包、配置文件和 XML 映射文件:

配置文件

XML 映射文件

  • javax.xml.rpc
  • javax.xml.rpc.encoding
  • javax.xml.rpc.handler
  • javax.xml.rpc.handler.soap
  • javax.xml.rpc.holders
  • javax.xml.rpc.server
  • javax.xml.rpc.soap
  • ibm-webservices-ext.xmi
  • ibm-webservices-bnd.xmi
  • ibm-webservicesclient-ext.xmi
  • ibm-webservicesclient-bnd.xmi
  • ws-security.xml
  • webservices.xml
  • web.xml
  • ejb-jar.xml
  • ibm-webservicesclient-bnd.xmi
  • application.xml

此规则从 JAX-RPC 转换工具运行验证,并已确定此扫描中没有 JAX-RPC Web Service 是使用 JAX-RPC 转换工具将二进制转换为 JAX-WS 的理想候选项。

针对基于 XML 的 RPC 的 Java API (JAX-RPC) 在 Liberty 或 Liberty Core 上不受支持。 此技术在 WebSphere Application Server Traditional V9.0 中不推荐使用,并且可能会在更高版本中移除。 如果应用程序使用 JAX-RPC,那么战略迁移路径将使用 JAX-WS,但以下是替代方法:

下表根据可能影响您项目的因素对四个选项进行了比较。

项目因素

选项 1

手动将 JAX-RPC Web Service 迁移到 JAX-WS Web Service

选项 2

在 Liberty 上使用 Apache Axis 1 JAX-RPC 引擎

选项 3

将 WebSphere Application Server Traditional 与其本机 JAX-RPC 引擎一起使用

支持的解决方案

JAX-WS 作为可配置功能部件 在除 Liberty Core 之外的所有 Liberty 版本上受支持。

Axis 1 不受支持。

JAX-RPC 在 WebSphere Application Server Traditional 上受支持。

战略性解决方案

JAX-WS 对于除 Liberty Core 之外的所有 Liberty 版本都是战略性的。

Axis 1 已不再进行后续开发。

JAX-RPC 在 WebSphere Application Server Traditional 中不推荐使用,并且可能会在更高版本中移除。

实现复杂性

该选项对于大量 JAX-RPC 客户机和 Web Service 可能比较复杂。 如果不使用 JAX-RPC 转换工具将 JAX-RPC 服务移植到 JAX-WS,那么需要对代码库进行许多更改。

如果应用程序已在使用 Axis 1,那么该选项并不复杂。 否则,该选项的复杂性为中。

将 JAX-RPC Web Service 迁移到其他引擎将保留代码库的大部分内容。

高级功能

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 Web Service,并且应用程序不符合 JAX-RPC Conversion 工具的要求,请使用此选项。

如果您的 JAX-RPC Web Service 已在 Axis 1 上运行,请使用此选项。

如果您的 JAX-RPC Web Service 已在 WebSphere Application Server Traditional 上运行,或者如果您有许多尚未在 Axis 1 上运行的 JAX-RPC Web Service,请使用此选项。

手动将 JAX-RPC Web Service 迁移到 JAX-WS Web Service

有关将应用程序从 JAX-RPC 迁移到 JAX-WS 的信息,请参阅联机文档中的 Web Service 迁移方案:JAX-RPC 到 JAX-WS 和 JAXB

有关 JAX-RPC 与 JAX-WS 之间的差别的更多信息,请参阅 JAX-WS 应用程序部署模型

在 Liberty 上使用 Apache Axis 1 JAX-RPC 引擎

如果您已使用 Axis 1,那么要在 Liberty 上使用 Axis 1,必须在 Liberty 类路径中包含 Axis 1 库。

如果使用嵌入式 JAX-RPC,那么可以转换 Web Service 以使用 Axis 1。 以下过程描述了如何将 Web Service 从 Red Hat JBoss 迁移到 Axis 1。

  1. Apache Web 站点下载 Axis 1.0 库。
    注:Axis 2.0 使用 JAX-WS 而不支持 JAX-RPC Web Service。
  2. 在类路径中包含 Axis 库。 可以在服务器类路径中,或在应用程序的 WEB-INF/lib 目录中包含这些库。
  3. 从 web.xml 文件中移除对 Web Service 的引用。
  4. 将 Axis 管理 servlet 添加到 web.xml 文件。 有关 web.xml 文件的示例,请参阅 Apache Web 站点上的高级安装:将 Axis 添加到您自己的 Web 应用程序
  5. 使用以下命令从 WSDL 文件重新生成 Web Service:

       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 参考

  6. 通过在 WEB-INF 目录中创建名为 server-config.wsdd 的 XML 文件来创建 Axis 部署描述符。

    有关 WSDD 配置元素的更多信息,请参阅 Apache Web 站点上的 部署 (WSDD) 参考

  7. 修改客户机代码以适合于新环境。 因为服务器未用作容器,所以无法使用 JNDI 引用。 必须移除 JNDI 引用,并将其替换为对 URL 的直接引用。

    例如,以下方法具有 JNDI 查找:


    public DemoType getService() throws Exception {

    javax.naming.InitialContext ctx = new javax.naming.InitialContext();

    DemoService service = (DemoService)ctx.lookup("java:comp/env/service/Demo");

    return service.getDemoService();
    }

    必须替换此查找:

    private com.ibm.demo.webservices.server.DemoType getService() throws Exception {

    com.ibm.demo.webservices.server.DemoService_ServiceLocator service = new com.ibm.demo.webservices.server.DemoService_ServiceLocator();

    com.ibm.demo.webservices.server.DemoType demoType = service.getDemoService();

    return demoType;

    }

将 WebSphere Application Server Traditional 与其本机 JAX-RPC 引擎一起使用

如果您要使用 WebSphere Application Server JAX-RPC 引擎,那么必须使用 WebSphere Application Server Traditional。 Liberty 不支持 JAX-RPC。 如果您要使用 Liberty,那么必须选择其他某个选项。

仅配置

如果检测到 JAX-RPC 配置文件,但是未检测到此应用程序中使用了 JAX-RPC Java API,那么这些配置文件可能来自先前使用但不再需要的 JAX-RPC 技术。 可以移除未使用的配置。