Web 服務工具 - 版本注意事項


1.0 限制
   1.1 將 WebSphere 第 6 版 DB2 私密 UDDI 登錄部署在現有的私密 UDDI 登錄上之後,便無法存取
   1.2 WS-I 附件設定檔 1.0 驗證無法使用
   1.3 精靈一律使用現有專案的 EAR,且會忽略其他 EAR 的選項
   1.4 精靈的「監視器」勾選框可能與現有的監視器衝突
   1.5 不可選擇「Web 服務使用者定義的函數」用戶端 Proxy 類型
   1.6 只能從 J2EE 視景使用啟動 Web 服務瀏覽器
   1.7 當建立 DADX Web 服務時,Web 服務精靈出現 IWAB0107E 錯誤
   1.8 當所選的目標伺服器不存在,Web 服務精靈出現 IWAB0534E 錯誤
   1.9 當未安裝目標伺服器時,Web 服務精靈出現 IWAB0213E
   1.10 StockQuote Axis 範例只在 Tomcat 5.0 中執行
   1.11 執行 EJB 專案和應用程式用戶端專案中的安全用戶端範例
   1.12 搭配 WebSphere Application Server 第 6 版中的 DB2 後端來執行私密 UDDI 登錄需要 root 許可權
   1.13 J2EE 1.3 和 J2EE 1.4 應用程式以複式類型參數產生給 Web 服務的 WSDL 檔可能不同
   1.14 變更新 EJB 專案的預設用戶端專案名稱
   1.15 在啟用安全特性的 WebSphere Application Server 5.0 版或 5.1 版上,端對端實務產生 restartModule 錯誤蹦現框
   1.16 路由器專案與 EJB 專案必須位於相同的 EAR 中
   1.17 LooseApps 可透過管理主控台來檢視但無法修改
2.0 已知的問題
   2.1 使用 IBM SOAP Skeleton Web 服務的完整實務失敗
   2.2 Skeleton 與用戶端實務無法搭配 HTTP 基本鑑別所保護的 WSDL 一起運作
   2.3 在執行「端點啟用程式」後,JMS 路由器專案中出現錯誤訊息
   2.4 指導教學:從 Java Bean 建立 Web 服務時,所建的套件名稱不正確
   2.5 刪除「使用者定義的分類架構」時不會將 tModel 從「私密 UDDI 登錄」中刪除。
   2.6 具備註解支援的 EJB Web 服務的程式碼產生於錯誤位置中
   2.7「範例展示區」中的 Web 服務範例可能會在發生錯誤下匯入
   2.8 如果 WSDL 不含任何 SOAP 連結,則用戶端實務中會擲出異常狀況
   2.9 在後續呼叫 Web 服務精靈期間,Skeleton 實務不重新整理產生的 Java 檔案
   2.10 UDDIPublish/UDDIUnpublish -profileName <profile name> 中擲出 NullPointerException

1.0 限制

1.1 將 WebSphere 第 6 版 DB2 私密 UDDI 登錄部署在現有的私密 UDDI 登錄上之後,便無法存取

您可能會遇到的問題是,在將 WebSphere 第 6 版 DB2 私密 UDDI 登錄部署在現有的 WebSphere 第 6 版私密 UDDI 登錄上之後,便無法存取。在 UDDI 部署精靈結束時,會在伺服器中執行 UDDI 應用程式,但不會辨識伺服器配置。 症狀是 UDDI EAR 無法與 DB2 UDDI 登錄互動。 這表示針對 UDDI 應用程式執行的所有指令都會失敗並出現錯誤(起始設定登錄節點時,發生錯誤)。 其中包括新增使用者定義的分類架構,這會擲出 Axis 錯誤。

暫行解決辦法:
1. 預防方法:在部署 WebSphere 第 6 版 DB2 UDDI 登錄之前,請利用 UDDI 精靈來移除任何先前安裝的 UDDI 登錄。 之後,再重新呼叫 UDDI 精靈來部署 WebSphere 第 6 版 DB2 私密 UDDI 登錄。
2. 如果要修正已安裝的登錄:如果您將 WebSphere 第 6 版 DB2 UDDI 登錄安裝在先前的登錄上,發生問題,您可以從伺服器管理主控台中停止 UDDIRegistry 應用程式,再重新啟動。

1.2 WS-I 附件設定檔 1.0 驗證無法使用

當 WSDL WS-I 驗證設為「建議」或「必要」時,在「視窗 -> 喜好設定 -> Web 服務 -> WS-I 標準」和「專案內容」中找到的 WS-I AP 標準層次設定對它無效。 依預設,這些喜好設定會設為「忽略」。

沒有暫行解決方法。WS-I WSDL 驗證器用來測試您的 WSDL 是否符合設定檔的「WS-I 附件設定檔測試確認文件」,WS-I 組織並未及時公佈它,以便併入這個 IBM Rational Developer 產品版本中。在「測試確認文件」公佈之後,會發出啟用喜好設定的臨時修正程式。

1.3 精靈一律使用現有專案的 EAR,且會忽略其他 EAR 的選項

如果服務或用戶端專案在啟動「Web 服務」或「Web 服務用戶端」精靈之前就已存在,則不論「服務部署配置」或「用戶端環境配置」頁面的所選項目為何,精靈一律會使用已包含現有專案的 EAR。 如果在啟動任何一個精靈之前,未將現有的專案新增至 EAR 中,精靈會失敗並出現下列錯誤:

IWAB0213E 啟動伺服器時,發生錯誤
詳細資料:
IWAB0213E 啟動伺服器時,發生錯誤。
org.eclipse.core.runtime.CoreException: WebSphere 第 5 版只支援 J2EE 1.2 和 1.3 企業應用程式。
at com.ibm.etools.websphere.tools.v51.internal.WASTestServerWorkingCopy.modifyModules(Unknown Source)
...

如果要暫行解決這項限制,請確定在啟動精靈之前,已將專供 Web 服務或 Web 服務用戶端使用的任何專案新增至 EAR 中。這個規則的唯一例外,是目標為 Tomcat 伺服器的專案,因為這些專案不需要新增至 EAR 中。

1.4 精靈的「監視器」勾選框可能與現有的監視器衝突

如果您手動建立了目標伺服器的監視器(使用「伺服器」標籤中的「監視 -> 內容...」),然後在「Web 服務」精靈的第一頁中執行「Web 服務」精靈,選取「監視 Web 服務」,在處理期間,精靈可能會失敗並出現下列錯誤:

IWAB0014E 發生非預期的異常狀況。空值
java.lang.NullPointerException
at com.ibm.etools.webservice.consumption.command.common.CreateMonitorCommand.hasContentWebServices(CreateMonitorCommand.java:114)
...

如果要暫行解決這個問題,請停用「監視 Web 服務」來重新執行精靈,或在伺服器中開啟「監視 -> 內容...」,移除監視器,再啟用「監視 Web 服務」來重新執行精靈。

1.5 不可選擇「Web 服務使用者定義的函數」用戶端 Proxy 類型

在「Web 服務」和「Web 服務用戶端」精靈的第一頁中,有兩個用戶端 Proxy 類型可供使用:"Java Proxy"(通常是預設值)和「Web 服務使用者定義的函數」。 If you select the "Web Service User-Defined Function" and attempt to finish the wizard or progress beyond the Web Service Selection Page, the wizard will fail with the error "IWAB0234E An internal error occurred. Details: null".

暫行解決方法:請勿利用 Web 服務精靈來建立 Web 服務使用者定義函數。 相反地,請選取「新建 -> 其他 -> 資料 -> Web 服務使用者定義的函數」。

1.6 只能從 J2EE 視景使用啟動 Web 服務瀏覽器

除了 J2EE 視景,您無法從任何其他位置使用「啟動 Web 服務瀏覽器」按鈕和「執行 > 啟動 Web 服務瀏覽器」功能表項目。

請開啟 J2EE 視景和啟動 Web 服務瀏覽器,適用的話,請在工作區中,用滑鼠右鍵按一下某份 WSDL 文件或某項 Web 服務,再選取「Web 服務 -> 利用 Web 服務瀏覽器測試」。

1.7 當建立 DADX Web 服務時,Web 服務精靈出現 IWAB0107E 錯誤

在啟用 Web 服務 Proxy 產生作業的 WebSphere Application Server 第 5 版的建立 DADX 或 URL Web 服務的實務中,精靈可能會失敗並出現類似下列錯誤:

IWAB0107E 試圖分析 WSDL 組件時,發現錯誤:輸入。
WSDLException: faultCode=PARSER_ERROR: 載入 http://localhost:9080/SomeProject/SomeGroup/something.dtd/XSD 時,發生問題:已拒絕連線:連接:包裝異常狀況
java.net.ConnectException: 已拒絕連線:連接
...

發生這個問題,是因為精靈未及時重新啟動伺服器,以便使 Web 服務用戶端程式碼產生器能夠從伺服器擷取 WSDL 或 XSD。 您至少可以用兩種方式來避免這個問題:

  1. 在「Web 服務」精靈中,選擇不是代管 Web 服務的伺服器來代管您的 Web 服務用戶端。
  2. 在「Web 服務」精靈中,停用 Proxy 程式碼的產生。 請在「Web 服務」精靈完成之後,再個別執行「Web 服務用戶端」精靈。

1.8 當所選的目標伺服器不存在,Web 服務精靈出現 IWAB0534E 錯誤

當利用 Web 服務精靈來建立尚不存在之伺服器的 Web 服務時,精靈會建立這個伺服器,但可能會失敗並出現下列錯誤:

「IWAB0534E 無法將 EAR 專案新增至伺服器配置中。」
詳細資料:java.lang.IllegalArgumentException:
at java.lang.Throwable.<init>(Throwable.java:59)
at java.lang.Throwable.<init>(Throwable.java:73)
at org.eclipse.core.internal.runtime.Assert.isLegal(Throwable.java)
at org.eclipse.core.internal.runtime.Assert.isLegal(Throwable.java)
at org.eclipse.core.runtime.Status.setMessage(Throwable.java)
at org.eclipse.core.runtime.Status.<init>(Unknown Source)
at com.ibm.wtp.server.core.internal.ServerWorkingCopy.modifyModules(Unknown Source)
...

如果要暫時解決這個問題,請重新啟動精靈,再重試一次。 精靈會使用前一個精靈在失敗之前已順利建立的伺服器。

1.9 當未安裝目標伺服器時,Web 服務精靈出現 IWAB0213E

當利用 Web 服務精靈來建立專案中的 Web 服務,且專案的目標伺服器類型尚未安裝,精靈可能會失敗,並出現下列訊息:

IWAB0213E 啟動伺服器時,發生錯誤。
org.eclipse.core.runtime.CoreException: 未正確啟動名稱為 WebSphere 5.1 版測試環境 @ localhost 的伺服器。 請檢查主控台來找出錯誤訊息。
at com.ibm.wtp.server.core.internal.Server.synchronousStart(Unknown Source)
...

發生這個問題,是因為精靈會在其「伺服器部署配置」或「用戶端環境配置」頁面中預設專案的目標伺服器,但並未先判斷目標伺服器是否已安裝且可以使用。 當利用產品的其他安裝架構來匯入其他使用者所產生的專案時,最可能出現這個情況。 暫行解決方法是在「部署伺服器配置」或「用戶端環境配置」頁面中,明確選取在工作區中的伺服器。

1.10 StockQuote Axis 範例只在 Tomcat 5.0 中執行

在匯入 StockQuoteAxis 範例之後,如果您試圖將 StockQuoteAxis 和 StockQuoteAxisClient 專案新增至 Tomcat 4.0 或 4.1 伺服器中,會出現「沒有任何專案可在伺服器中新增或移除」訊息。 如果您試圖在 Tomcat 4.0 或 4.1 伺服器中執行範例 JSP,便會出現「所選伺服器不支援 J2EE Web 模組規格的 1.4 版」訊息。

發生這個問題,是因為已建立範例中要在 J2EE 1.4 / Servlet 2.4 執行時期上執行的 StockQuoteAxis 和 StockQuoteAxisClient Web 專案,而 Tomcat 4.0 和 Tomcat 4.1 都不支援 Servlet 2.4 規格。 有兩個暫行解決辦法:

  1. 在 Tomcat 5.0 伺服器中執行範例。
  2. 遵循範例展示區中的「建置」指示,選擇 Tomcat 4.0 或 4.1 作為 Web 專案的目標。

1.11 執行 EJB 專案和應用程式用戶端專案中的安全用戶端範例

精靈在 EJB 或應用程式用戶端專案中產生的 Web 服務用戶端的 JSP 範例, 會在非儲存器管理的環境中呼叫 Web 服務用戶端 Proxy。 Web 服務用戶端的安全配置都會被略過,用戶端會實際成為未受保護,使它無法與安全的 Web 服務交互作業。

如果要執行 EJB 專案中的安全用戶端範例,請執行下列動作:

  1. 在用戶端 EJB 中建立一個方法。
  2. 在方法中,透過 Proxy 發出 Web 服務呼叫。
  3. 執行用戶端 EJB。
如果要執行應用程式用戶端專案中的安全用戶端範例,請執行下列動作:
  1. 在應用程式用戶端中,找出 Main.java。
  2. 在主要程式中,透過 Proxy 發出 Web 服務呼叫。
  3. 執行應用程式用戶端。

1.12 搭配 WebSphere Application Server 第 6 版中的 DB2 後端來執行私密 UDDI 登錄需要 root 許可權

在 Linux 中,如果要利用 DB2 來作為私密 UDDI 登錄的後端系統,Rational Developer 產品和 WebSphere Application Server 第 6 版產品都必須從 source db2profile 的目錄中,在命令提示字元之下啟動。 比方說,如果您的 DB2 實例稱為 db2inst1,且 Rational Developer 產品安裝在 /opt/IBM/RAD 中,正確啟動它們的方式如下:

1. 開啟命令提示字元。
2. 在提示中,輸入 type . /home/db2inst1/sqllib/db2profile(請注意點後面的空格)
3. 在相同的提示中,輸入 /opt/IBM/RAD/runtimes/base_v6/bin/startServer.sh server1
4. 在相同的提示中,輸入 /opt/IBM/RAD/rationalsdp.bin

1.13 J2EE 1.3 和 J2EE 1.4 應用程式以複式類型參數產生給 Web 服務的 WSDL 檔可能不同

如果您建立 J2EE 1.3 由下而上 Web 服務,且其中包含複式類型參數,含 getter 之參數類別中的每個欄位都會對映至 WSDL 中,在 xsd:complexType 之下的子項元素。 如果要完全符合 J2EE 1.4 中的 JAX-RPC 1.1 規格,就會改變這個行為。 每個讀寫內容(如 java.beans.Introspector 類別所識別)都會對映至 xsd:complexType 中的一個元素。

1.14 變更新 EJB 專案的預設用戶端專案名稱

當建立 Skeleton EJB Web 服務,且其中所需要的目標 EJB 專案尚不存在,Web 服務精靈會自動建立 EJB 專案及相關聯的 EJB 用戶端 JAR。 例如 EJBProjectName and EJBProjectNameClient。 這個 EJB 用戶端 JAR 專案名稱與 Web 服務精靈試圖建立 Web 服務用戶端時所選取的預設 Web 服務用戶端專案名稱衝突。 這會在 Web 服務用戶端專案中發生錯誤。 如果 Web 服務用戶端專案是一個 Web 專案,用戶端 EAR 中會出現錯誤,如果您要求精靈產生範例 JSP 測試機能,也會出現「複製 Web 服務公用程式 JAR 時發生錯誤」。

暫行解決方法是挑選不同於 EJBProjectNameClient 的名稱給 Web 服務用戶端專案(當 EJB 專案 EJBProjectName 不存在時),或在啟動 Web 服務精靈之前建立 EJB 專案。

1.15 在啟用安全特性的 WebSphere Application Server 5.0 版或 5.1 版上, 端對端實務產生 restartModule 錯誤蹦現框

如果 WebSphere Application Server 5.0 版或 5.1 版有啟用安全特性, Web 服務端對端實務會發生等待逾時, 並產生錯誤訊息指出「無法重新啟動模組」。*". 您可以放心忽略這個錯誤。

1.16 路由器專案與 EJB 專案必須位於相同的 EAR 中

在 IBM SOAP 與 IBM WebSphere 執行時期中, 不論是由上而下或由下而上 EJB Web 服務實務, EJB 專案與其路由器專案都必須放在相同的 EAR 中。

1.17 LooseApps 可透過管理主控台來檢視但無法修改

部署在 WebSphere Application Server 第 6 版中的應用程式可透過管理主控台來檢視但卻無法修改。 如果 Rational Developer 產品應用程式需要完整的主控台功能, 您可以從 UTE 伺服器編輯器取消選取「從工作區執行資源」。實質上這會將 UTE 視為遠端伺服器, 並產生與發佈 .ear 檔。

2.0 已知的問題

2.1 使用 IBM SOAP Skeleton Web 服務的完整實務失敗

如果您利用 IBM SOAP 執行時期從 WSDL 檔中建立 skeleton Web 服務,且選擇在相同精靈內產生 Proxy,Proxy 會無法產生或無法正確產生。 暫行解決方法是先產生 skeleton Web 服務,再利用產生的 WSDL 來個別產生用戶端。

2.2 Skeleton 與用戶端實務無法搭配 HTTP 基本鑑別所保護的 WSDL 一起運作

在現行版本中,Web 服務精靈無法使用受 HTTP 基本鑑別保護的 WSDL 檔, 來建立 Skeleton Web 服務或 Web 服務用戶端。暫行解決辦法是使用瀏覽器並將 WSDL 下載至實體檔案系統, 並使用該 WSDL 檔的副本來執行 Web 服務精靈。

2.3 在執行「端點啟用程式」後, JMS 路由器專案中出現錯誤訊息

在您執行「端點啟用程式」Web 服務以建立 JMS 端點後, JMS 路由器專案中的 ejb-jar.xml 檔報告了下列錯誤:「CHKJ2802E: 無法反映 com.ibm.ws.webservices.engine.transport.jms.JMSListenerMDB 類別或其超類型之一。請檢查類別路徑。」您可以放心忽略這個錯誤訊息。

2.4 指導教學: 從 Java Bean 建立 Web 服務時,所建的套件名稱不正確

在您完成「從 Java Bean 建立並部署 Web 服務」時, 會要求您從 Resources 資料夾匯入 StockQuoteService Java Bean。 Resources 資料夾中的資料夾結構不正確,因而所建立的套件會和 Java Bean 中的套件名稱不相符。

如果要更正此問題,請在匯入必要的資源時, 選取 StockQuote 資料夾,並取消選取其中的資料夾。一旦匯入 StockQuote 資料夾後,請選取 StockQuote 套件, 並按一下滑鼠右鍵以選取「重構 > 重新命名」,然後重新命名 stockquote 套件。

2.5 刪除「使用者定義的分類架構」時不會將 tModel 從「私密 UDDI 登錄」中刪除。

當您在「私密 UDDI 登錄」精靈中刪除表格中的「使用者定義分類架構」時, 會將種類資料從登錄中刪除,但 tModel 本身仍遺留。「Web 服務瀏覽器」在搜尋「使用者定義的種類」時, 仍會顯示已刪除的種類。

2.6 具備註解支援的 EJB Web 服務的程式碼產生於錯誤位置中

如果 EJB 與 EJB 專案是透過註解支援建立而成, 則 EJB 的 Home 和遠端介面會建立在 EJB 或 EJB 用戶端專案的 gen/src 子資料夾中,而非建立在 ejbModule 資料夾中。Web 服務精靈會將產生的程式碼放到預設資料夾中, 如此會造成 Home 和遠端介面重複。 在簡單實務中,這似乎不會影響 Web 服務的執行, 但為了避免發生編譯錯誤,使用者在啟動 Web 服務精靈前, 可將 Home 和遠端介面從 gen/src 資料夾移至 ejbModule 資料夾。

2.7 「範例展示區」中的 Web 服務範例可能會在發生錯誤下匯入

如果您沒有 WebSphere 第 6 版伺服器, 當您試著從範例展示區(「WebSphere 股票報價」、「溫度轉換」或「通訊錄」 )匯入 WebSphere Web 服務時, 您會看到下列警告:

偵測不到 WebSphere 第 6 版伺服器執行時期。在您安裝 WebSphere 第 6 版伺服器後, 您必須手動為匯入的專案設定伺服器目標執行時期。

如果您刪除已匯入的範例,並手動新增 WebSphere 第 6 版伺服器然後重新匯入, 則會因無法鎖定目標伺服器,而仍會在出現編譯錯誤下匯入範例。暫行解決辦法是刪除範例,關閉工作台,重新啟動然後重新匯入範例。

2.8 如果 WSDL 不含任何 SOAP 連結, 則用戶端實務中會擲出異常狀況

當您使用 WebSphere Application Server 6.0 版來建立 Web 服務用戶端時, 如果您所用的 WSDL 文件不含任何 SOAP 連結,將會擲出異常狀況。

2.9 在後續呼叫 Web 服務精靈期間, Skeleton 實務不重新整理產生的 Java 檔案

如果您需要使用已修改的 WSDL 檔在相同專案中重建現有的 Web 服務, 則不會重新整理產生的 Java 檔案。這可能導致編譯錯誤或 Java 檔案維持不變。 暫行解決辦法是先備份再刪除所有產生的 Java 檔案, 然後再執行 Skeleton Web 服務精靈。

2.10 UDDIPublish/UDDIUnpublish -profileName <profile name> 中擲出 NullPointerException

如果 -inquiryUrl <url> 不指定在 -profileName 前面, UDDIPublish/UDDIUnpublish -profileName <profile name> 中會擲出 NullPointerException。 您可能不需使用 -profileName,這是因為預設值已符合所安裝的設定檔。 如果您仍需要使用 -profileName,則應將 -inquiryUrl <url> 指定在 -profileName <profile name> 之前。

返回主 Readme 檔