Web 服務喜好設定

如果要設定任一個 Web 服務喜好設定,請遵循下列步驟:
  1. 按一下視窗 > 喜好設定,開啟「喜好設定」筆記本。
  2. 展開 Web 服務,再按一下您想要使用的喜好設定種類。
  3. 選取當建立 Web 服務時您想要設定以作為預設值的勾選框。
  4. 按一下確定以套用變更,再關閉「喜好設定」筆記本。
如果您需要任一選項的詳細資訊,請選取選項,然後按 F1

Web 服務可讓您定義下列喜好設定:

舊版相容性
舊版相容性喜好設定可讓您使用與舊版 WebSphere® Studio 相容的選項。您在使用的 Web 服務必須使用 IBM® SOAP 執行時期環境,這個喜好設定才適用。
如果下列項目中有底線或 Java™ ID 所不接受的其他字元:
  • Bean 屬性的名稱(當從 Java Bean 或 EJB 建立 Web 服務時)
  • XSD 檔中的複式類型元素名稱(當建立 Web 服務用戶端 Proxy 時)
請勿選取使用第 4 版對映樣式這個 Web 服務舊版相容性喜好設定。比方說,如果您有稱為 Bean 的 Bean,這個 Bean 有稱為 mybean_name 的屬性,且您指定使用第 4 版對映樣式,在執行時期,可能會出現類似下列錯誤:異常狀況:[SOAPException: faultCode=SOAP-ENV:Client; msg=無法取消配置 mappings.BeanContentType。無法利用 mappings.BeanContentType 類別的方法名稱 setMybeanName 來找到 setter 方法。]
產生程式碼
您可以利用「產生程式碼」喜好設定來設定下列選項:
  • 如果您要利用 IBM SOAP 執行時期環境來建立 Web 服務,請執行下列動作:
    • 在 WSDL import 陳述式中使用絕對位置 URI。
    • 在產生程式碼時使用行內綱目。
    • 啟用指向 Proxy 檔的元素型對映。
    • 將 XML 簡式資料類型對映至 java.lang Wrapper 類別,而不是對映至 Java 初始類型。
  • 如果您要利用 IBM WebSphere 執行時期環境來建立 Web 服務,請執行下列動作:
    • 在從 WSDL 產生 Java 時,停用資料連結和使用 SOAP 元素。依預設,Web 服務精靈會遵循 JAX-RPC 規則,且只會將不支援的 XSD 類型對映至 SOAPElement 物件。在選取這個選項之後,發射器會將每個項目都對映至 SOAPElement 物件。這可讓您選擇替代的 XSD 至 Java 對映(如:EMF 或 SDO),並在整個服務端點介面中一致地套用其對映。
    • 不改寫可載入的 Java 類別。選取之後,「Web 服務」精靈不會將任何 Java 類別寫入同時符合下面兩個情況的目標專案:
      • 尚未在專案中
      • 當應用程式在伺服器中執行時,在可從目標專案載入的專案、模組或 JAR 檔中。
      如果未選取這個選項,精靈可能會將 Java 類別寫入會在其他專案、模組或 JAR 檔中遮罩預先存在的同名類別之目標專案中。這可能會造成執行時期環境和編譯錯誤。

      目前有一個問題存在, 那就是在「處理常式配置」精靈中新增 Handler 之後,除非 Handler Java 檔已存在於完全相同的位置, 且您未選取「不改寫可載入的 Java 類別」,否則精靈都會在您專案的主要來源資料夾中產生新的架構 Handler Java 檔。精靈並不會檢查 EAR 中的其他位置是否有完整名稱相同的 Handler 存在。因此,當您使用精靈來新增 Handler 時,如果其已存在於 EAR 中的其他位置(如位於專案中不同的來源資料夾,或是 EAR 的另一個模組中),精靈會寫入新的架構 Handler,並忽略原來的 Handler 類別。如果發生此狀況,請刪除由精靈產生的架構 Handler。

    • 當您選取 WebSphere Application Server 5.1 版做為 Web 服務的目標伺服器時,請使用 WebSphere 5.1.1 版 Web 服務發射器。Web 服務工具無法偵測做為 Web 服務目標的 WebSphere Application Server 版本為何, 因此針對伺服器版本選擇正確層次的發射器是很重要的。如果未勾選這個勾選框, 這些工具會使用 WebSphere 5.1.0 發射器來產生程式碼,則這份程式碼可用於 WebSphere Application Server 5.0.1 版和 5.1.1 版。如果您勾選了這個勾選框, 則會使用 WebSphere 5.1.1 版發射器,因此這份程式碼只會在 WebSphere Application Server 5.1.1 版上編譯。
請注意,當利用 IBM SOAP 執行時期環境來產生元素型對映時
  • 現在,當使用 IBM SOAP 執行時期環境時,如果選取「啟用元素型對映」,除了任何以正常類型為基礎的對映,Web 服務精靈也完全能夠產生元素型對映。

    如果沒有啟用這個喜好設定(這是預設值),則 Apache/IBM SOAP 執行時期環境可能無法與其他供應商的 Web 服務執行時期環境交互作業,來傳送沒有 "xsi:type" 內容訊息的元素。其他供應商的 Web 服務執行時期環境內容會遵循各種 xsi:type 內容併入原則。 有些一律會併入它們。 有些則否。 有些會提供配置選項。有些會略過特定類型(如陣列)的 xsi:types。

    以下是 IBM/Apache SOAP 執行時期環境所產生的一般錯誤:

    targetException=java.lang.IllegalArgumentException: 找不到解除序列化常式,利用編碼樣式 'http://schemas.xmlsoap.org/soap/encoding/' 將 ':MyElement'解除序列化。 啟用之後,會在下列各項中產生元素型對映:
    • 由下而上的 Java Bean/EJB 實務和 WSDL Skeleton 實務的部署描述子檔
    • 用戶端實務中的 Proxy

    元素型對映形式如下:

    <isd:map encodingStyle="encoding style" xmlns:x="some-namespace" qname="x:some-local-name" xml2JavaClassName="some-deserializer-class-name"/>

    下列各項目會產生元素型對映:

    • 每個 wsdl:message 輸入中所定義的每個組件。
    • 每個 wsdl:message 輸出中所定義的每個組件,只適用於 Skeleton 和 Proxy 實務。
    • WSDL 檔中的各組件所參照的每個複式類型中的每個根元素或區域元素

    「WSAD Web 服務」精靈會遵循 SOAP 和 XSD 規格來決定應不應該限定(就是有名稱空間)元素型對映中的元素名稱。

    WSAD Web 服務精靈遵循這些規則來決定是否要限定元素名稱:

    • WSDL 中的組件名稱會產生沒有限定的名稱。
    • XSD 中的根元素會產生限定的名稱。
    • 如果綱目指定 elementFormDefault="unqualified"(綱目沒有 elementFormDefault 屬性時的預設值),XSD 中的區域元素會產生沒有限定的名稱。
    • 如果綱目指定 elementFormDefault="qualified",XSD 中的區域元素會產生沒有限定的名稱。

    部分執行時期環境已知雖然綱目利用 XSD 綱目的 "elementFormDefault" 屬性來指定使用限定的元素,但仍會在 SOAP 訊息中產生沒有限定的元素。在這個情況下,您可能需要手動編輯服務的 WSDL 或 XSD,將 elementFormDefault 改成 "unqualified"。

    以下是以非名稱空間限定元素為基礎的對映範例:

    <isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:x="" qname="x:name" xml2JavaClassName="org.apache.soap.encoding.soapenc.StringDeserializer"/>

    以下是以名稱空間限定元素為基礎的對映範例:

    <isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:x="http://www.ibm.com/" qname="x:name" xml2JavaClassName="org.apache.soap.encoding.soapenc.StringDeserializer"/>

    請注意,一個給定的元素名稱只會產生一個元素型對映。 也就是說,如果綱目重複使用不同類型的相同元素名稱,就只會選取其中一個元素(實際上是隨機選取)作為基礎來進行一個元素型對映。 其他不同類型的同名元素無法解除序列化。 如果綱目將相同名稱用在元素和 WSDL 組件上,也是如此。

  • 當開始使用會傳回對映或雜湊表陣列的服務 Bean,且已啟用「元素型對映」選項時,產生的 SOAP Proxy 會不正確地將傳回類型對映至 java.lang.String[]。 在執行時期,會發生 ClassCastException。 如果要解決這個問題,請利用新建立的 WSDL 來執行 Web 服務用戶端精靈,再將 SOAP Proxy 重新產生在用戶端專案中。
  • 如果您選取「啟用元素型對映」這個 Web 服務產生程式碼喜好設定,且您選擇要部署在 WebSphere Application Server 第 4 版中,ISD 檔和 dds.xml 中可能會出現下列項目:

    <isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:x="" qname="x:some-name" xml2JavaClassName="some-serializer"/>

    XML 編輯器可能會設定下列錯誤的旗標:

    屬性 "xmlns:x" 的值無效。附加字首的名稱空間連結不可以是空的。

    這對 WebSphere Application Server 第 4 版沒有影響。 不過,請勿嘗試將這個 dds.xml 部署在使用 Xerces 2.x (XML4J 4.x) 或更新版本(如 WebSphere Application Server 第 5 版)的其他伺服器中。否則,當伺服器載入 dds.xml 檔時,會出現類似的 Xerces 剖析錯誤。 您應該透過 Web 服務實務和選取正確的伺服器類型來重新產生 dds.xml。 這會產生這個伺服器類型的正確 dds.xml。

    另外,當試圖部署這個 ISD 檔的 Web 服務時,也會出現類似的 Xerces 剖析錯誤。 解決方案是將檔案手動編輯成下列格式:

    <isd:map encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" qname="some-name" xml2JavaClassName="some-serializer"/>

JDBC 驅動程式
您可以利用「JDBC 驅動程式」喜好設定來新增 JDBC 驅動程式的 JAR 檔。在 Linux 中,可能很難判斷含有 JDBC 驅動程式之 JAR 檔的位置。這個喜好設定就是為此而加入的,使您能夠指定要用哪個 JAR 檔。這只供 Linux 中的 DADX 驗證碼使用。
蹦現對話框選項
「對話框」喜好設定可讓您決定在執行蹦現動作時,您要看到的對話框。如果您在 Web 服務精靈的第一頁選取了「不再顯示這個對話框」來關閉所有對話框, 您可以清除您選擇要隱藏之對話框旁的勾選框,來還原您的變更。
私密 UDDI 登錄
您可利用這個頁面來設定 UDDI 種類資料直欄和字串定界字元。
專案拓蹼
您可以利用「專案拓蹼」喜好設定來執行下列動作:
  • 選取在產生 Web 服務用戶端時,Web 服務精靈要建立的預設用戶端專案類型。您也可以設定用戶端專案類型在精靈中的列出次序。請注意,這個選項只是預設值,在精靈中仍可以選取替代的專案類型。
  • 選擇您要在相同 EAR 專案或不同 EAR 專案中產生 Web 服務和 Web 服務用戶端。 在不同 EAR 專案中產生服務和用戶端,可以減少兩者同時存在於單一 EAR 專案時所可能發生的衝突,但會使用較多系統資源。
資源管理
「資源管理」喜好設定可讓您決定當建立 Web 服務時您所要使用之建立和改寫檔案與資料夾的預設值。
實務預設值
「實務預設值」喜好設定可讓您設定當建立 Web 服務時所要使用的下列實務預設值:
  • 依預設,您要選取哪一種類型的 Web 服務。
  • 是否要由精靈啟動 Web 服務。
  • 依預設是否要啟動 Web 服務瀏覽器,使您能夠將 Web 服務發佈至 UDDI 登錄。
  • 是否要產生 Proxy,以及產生之 Proxy 的預設類型。
  • 依預設是否要啟動 Web 服務瀏覽器,使您能夠測試 Web 服務。
  • 是否要透過 TCP/IP 監視器遞送 Web 服務 SOAP 資料傳輸, 使您能夠監視 SOAP 封包,並選擇性地測試其是否符合 WS-I 標準。
請注意,這些所有預設值都可以在精靈中改寫。
伺服器和執行時期
選取您要在 Web 服務精靈中預設選取的伺服器、Web 服務執行時期環境以及 J2EE 版本。請注意,這些所有預設值都可以在精靈中改寫。
SOAP 傳輸
請選取您的預設傳輸:SOAP over HTTP 或 SOAP over JMS。僅當您使用的 Web 服務是使用 WebSphere 執行時期環境,才適用這個喜好設定。
測試機能預設值
可以選取是否要讓精靈自動啟動測試機能, 且您可選取偏好的測試機能類型。
Web 服務瀏覽器
您可以利用「Web 服務瀏覽器」喜好設定來選擇是否要忽略 SOAP 陣列的綱目。當測試使用 IBM SOAP 執行時期環境的 Web 服務時,建議您使用這個項目。
WSDL 檔
在 WSDL 編輯器中建立 WSDL 檔時,您可以設定預設目標名稱空間。如果您未選取要變更預設值, 則 WSDL 檔會以 http://tempuri.org 做為其目標名稱空間。
符合 WS-I 標準
「符合 WS-I 標準」喜好設定可讓您選取符合「WS-I 簡式 SOAP 連結設定檔」(SSBP) 以及「WS-I 附件設定檔」(AP) 的層次。這個喜好設定主要適用於使用 WebSphere 執行時期環境的 Web 服務。使用 IBM SOAP 執行時期環境和 Apache Axis 執行時期環境的 Web 服務,通常都不符合 WS-I 標準。 附註:當不符合 WS-I 標準列在「作業」視圖中時,如果您變更符合 WS-I 標準的層次, 「作業」視圖就無法自動更新。必須先重新驗證工作區,才能夠從「作業」視圖中移除警告。
使用條款 | 讀者意見
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.