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 服務是使用 JAX-RPC 轉換工具進行二進位轉換至 JAX-WS 的良好候選項。

在 Liberty 或 Liberty Core 中不支援 Java API for XML-based RPC (JAX-RPC)。 此技術在 WebSphere Application Server 9.0 版中已淘汰,在更新版本中可能會移除。 如果應用程式使用 JAX-RPC,那麼策略移轉路徑是使用 JAX-WS,但以下是替代方案:

下表根據可能影響專案的因素來比較四個選項。

專案因素

選項 1

手動將 JAX-RPC Web 服務移轉至 JAX-WS Web 服務

選項 2

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

選項 3

將 WebSphere Application Server Traditional 與其原生 JAX-RPC 引擎搭配使用

支援的解決方案

Liberty Core 以外的所有 Liberty 版本都支援 JAX-WS 作為可配置的特性 。

不支援 Axis 1。

在 WebSphere Application Server Traditional 中支援 JAX-RPC。

策略性解決方案

JAX-WS 在策略上適用於 Liberty Core 以外的所有 Liberty 版本。

不再開發 Axis 1。

JAX-RPC 在 WebSphere Application Server Traditional 中已淘汰,在更新版本中可能會移除。

實作複雜性

如果是大量 JAX-RPC 用戶端和 Web 服務,此選項會很複雜。 如果不使用「JAX-RPC 轉換」工具來將 JAX-RPC 服務 透過埠連接至 JAX-WS,則需要對程式碼庫進行許多變更。

如果應用程式已經使用 Axis 1,此選項不會複雜。 否則,此選項為中複雜度。

將 JAX-RPC Web 服務移轉至不同的引擎可保留大部分的程式碼庫。

進階特性

JAX-WS 提供了許多進階特性,如「註釋」、「JAXB 連結」和 SOAP 1.2。

JAX-RPC 缺少許多 JAX-WS 中的進階特性。

JAX-RPC 缺少許多 JAX-WS 中的進階特性。

規格標準

雖然 JAX-RPC 仍然是 Java EE 規格的一部分,但將於 Java EE 6 淘汰。

雖然 JAX-RPC 仍然是 Java EE 規格的一部分,但將於 Java EE 6 淘汰。

建議

如果您有一些 JAX-RPC Web 服務,且應用程式不符合「JAX-RPC 轉換」工具的需求,請使用這個選項。

如果 JAX-RPC Web 服務已在 Axis 1 上執行,請使用此選項。

如果 JAX-RPC Web 服務已在 WebSphere Application Server Traditional 上執行,或是有許多 JAX-RPC Web 服務尚未在 Axis 1 上執行,請使用此選項。

手動將 JAX-RPC Web 服務移轉至 JAX-WS Web 服務

如需將應用程式從 JAX-RPC 移轉至 JAX-WS 的相關資訊,請參閱線上文件中的 Web 服務移轉實務 :JAX-RPC 至 JAX-WS 和 JAXB

如需 JAX-RPC 和 JAX-WS 之間差異的相關資訊,請參閱 JAX-WS 應用程式部署模型

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

如果您已使用 Axis 1,若要在 Liberty 中使用它,您必須將 Axis 1 程式庫併入 Liberty 類別路徑中。

如果您使用內嵌的 JAX-RPC,您可以將 Web 服務轉換成使用 Axis 1。 下列程序說明如何將 Web 服務從 Red Hat JBoss 移轉至 Axis 1。

  1. Apache 網站下載 Axis 1.0 程式庫。
    附註:Axis 2.0 使用 JAX-WS,但不支援 JAX-RPC Web 服務。
  2. 將 Axis 程式庫併入類別路徑中。 您可以將程式庫併入伺服器類別路徑中,或是應用程式的 WEB-INF/lib 目錄中。
  3. 從 web.xml 檔中移除 Web 服務的參照。
  4. 將 Axis 管理 Servlet 新增至 web.xml 檔。 如需 web.xml 檔的範例,請參閱 Apache 網站上的 進階安裝:將 Axis 新增至您自己的 Webapp
  5. 使用下列指令從 WSDL 檔重新產生 Web 服務:

       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 網站上的 WSDL2Java 參照

  6. 在 WEB-INF 目錄中建立名稱為 server-config.wsdd 的 XML 檔,以建立 Axis 部署描述子。

    如需 WSDD 配置元素的相關資訊,請參閱 Apache 網站上的 部署 (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 技術所產生的,但已不再需要它們。 可以移除未用的配置。