Web 服務可讓您定義下列喜好設定:
目前有一個問題存在, 那就是在「處理常式配置」精靈中新增 Handler 之後,除非 Handler Java 檔已存在於完全相同的位置, 且您未選取「不改寫可載入的 Java 類別」,否則精靈都會在您專案的主要來源資料夾中產生新的架構 Handler Java 檔。精靈並不會檢查 EAR 中的其他位置是否有完整名稱相同的 Handler 存在。因此,當您使用精靈來新增 Handler 時,如果其已存在於 EAR 中的其他位置(如位於專案中不同的來源資料夾,或是 EAR 的另一個模組中),精靈會寫入新的架構 Handler,並忽略原來的 Handler 類別。如果發生此狀況,請刪除由精靈產生的架構 Handler。
現在,當使用 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'解除序列化。 啟用之後,會在下列各項中產生元素型對映:元素型對映形式如下:
<isd:map encodingStyle="encoding style" xmlns:x="some-namespace" qname="x:some-local-name" xml2JavaClassName="some-deserializer-class-name"/>下列各項目會產生元素型對映:
「WSAD Web 服務」精靈會遵循 SOAP 和 XSD 規格來決定應不應該限定(就是有名稱空間)元素型對映中的元素名稱。
WSAD Web 服務精靈遵循這些規則來決定是否要限定元素名稱:
部分執行時期環境已知雖然綱目利用 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 組件上,也是如此。
<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"/>