WSDL 配置精靈

在您建立協同作業物件,並將其觸發埠連結到 Web 服務連接器的實例之後, 即已準備好,可以使用「WSDL 配置精靈」了。 公用程式會使用您為協同作業、商業物件定義和連接器指定的連結、埠名、作業及其他資料, 來產生 WSDL 實作檔案 (*.impl.wsdl)、WSDL 介面檔 (*.wsdl) 及 xml 綱目檔 (*.xsd )。 這些檔案是一組顯現成 Web 服務的協同作業。且公用程式可讓您指定是要將這些檔案產生成個別的檔案,還是一個檔案。 該公用程式可支援 HTTP、HTTPS 及 JMS 通訊協定上的 SOAP。 可從連接器特定的內容 ProtocolListenerFramework 來擷取通訊協定接聽器組織架構的配置資訊。 這個內容也使得接聽器清單變成有效的。

執行精靈

若要執行「WSDL 配置精靈」,請:

  1. 用滑鼠右鍵按一下您為 Web 服務所配置的協同作業物件,並於蹦現功能表中選擇「顯現為 Web 服務」。 「WSDL 配置精靈」的顯示如圖 57 所示。

    圖 57. WSDL 配置精靈


    圖 57,直欄如下所示:

  2. 請依需要輸入下列資訊:
  3. 按一下「完成」。 公用程式會根據您所輸入的輸入值及規格來產生輸出項目,下節中會有這些事項的摘要。

TLO 格式之商業物件的 WSDL 配置精靈處理程序

配置精靈會針對連結至 Web 服務連接器之協同作業物件的每個觸發埠,來建立 WSDL 作業。 作業的建立是以與此協同作業呼叫作業相關的商業物件為基礎。

配置精靈會讀取物件層次 ASI ws_eventtlo,以判斷商業物件是否為 TLO 格式。 如果 ASI 內容的設定為 true,則商業物件為 TLO。 使用該 TLO,可找到下列 WSDL 內容:

若要以 TLO 來建立 WSDL 作業,可以用兩種方式來配置協同作業,就是有對映,和沒有對映。

有對映的 TLO

通常協同作業的配置是可以接受「通用商業物件 (GBO)」要求。 意即,協同作業範本觸發埠會訂閱 GBO。若要使用此案例的 TLO, 則協同作業必須連結到 Web 服務連接器,且連接器必須支援透過對映來將 GBO 轉換成 TLO 的作業。 圖 58顯示此範例情況。

圖 58. 含對映的 TLO


若以這個方式來配置協同作業及連接器,精靈會決定使用 TLO 商業物件, 建立 WSDL 文件中所說明的作業。 這是在視察過連接器支援的商業物件及相關對映後,所做出的決定。 對 Web 服務連接器的執行時期處理程序而言,所配置的對映必須將協同作業的 GBO 轉換成一個且只能有一個 TLO,這是很重要的。 此外,入埠對映的來源和目的地商業物件,要分別轉換成離埠對映的目的地和 來源商業物件,這也是很重要的。

沒有對映的 TLO

精靈亦支援處理沒有對映的 TLO。 在此情況下,協同作業範本的觸發埠會直接訂閱 TLO。 因為 Web 服務連接器支援 TLO,所以不需要對映。 圖 59說明此範例情況。

圖 59. 沒有對映的 TLO


若是以這個方式來配置協同作業及連接器,精靈就會使用在協同作業中找到的 TLO 商業物件,來建立 WSDL 文件中所說明的作業。 精靈會決定不為此埠配置對映。

非 TLO 格式之商業物件的 WSDL 配置精靈處理程序

對非 TLO 商業物件的支援,可讓您使用預先存在的協同作業和對映,來顯現成 Web 服務。 因此,精靈亦可支援用非 TLO 格式的商業物件來建立 WSDL 作業。

和 TLO 處理程序一樣,精靈會讀取物件層次 ASI ws_eventtlo, 以判斷商業物件是否為非 TLO 格式。 若 ASI 內容不存在,或是雖然存在,但不是設定為 true,則此商業物件為非 TLO。 非 TLO 是不屬於 Web 服務 TLO 結構的任何商業物件。 若使用非 TLO,精靈會探索下列內容:

若要以非 TLO 來建立 WSDL 作業,可以用兩種方式來配置協同作業,就是有對映,和沒有對映。

有對映的非 TLO

通常協同作業的配置是可以接受「通用商業物件 (GBO)」要求。 同時,其中可能會有預先存在的對映,可將 GBO 從協同作業轉換成非 TLO 商業物件。 圖 61顯示此範例情況。

圖 61. 有對映的非 TLO


於此情況下,精靈會使用非 TLO 商業物件來建立 WSDL 文件中所描述的 WSDL 作業。 對 Web 服務連接器的執行時期處理程序而言,所配置的對映必須將協同作業的 GBO 轉換成 一個且只能有一個非 TLO,這是很重要的。 此外,入埠對映的來源和目的地商業物件,要正確地分別轉換成離埠對映的目的地和 來源商業物件,這也是很重要的。

沒有對映的非 TLO

於高度特殊化的案例中,可將協同作業配置成可接受不是來自 GBO 的商業物件之要求。 在此情況下,非 TLO 是協同作業的直接商業物件,而且沒有對映存在。 圖 62顯示此範例情況。

圖 62. 沒有對映的非 TLO


於此情況下,精靈會決定不為此埠配置對映,所以它會使用非 TLO 商業物件來建立 WSDL 文件中所描述的 WSDL 作業。

基本需求及例外的處理

除非另有明確指示,否則下面一節所討論的「WSDL 配置精靈」基本需求, 適用於所有類型的物件 (TLO 及非 TLO)。 如需有關 Web 服務 TLO 之商業物件基本需求的進一步資訊,請參閱商業物件基本需求

註:
在 WSDL 工具所讀取的商業物件 ASI 當中,只有下列各項可以含有國際化字元:

支援 SOAP Config MO 中的 Use 內容

「WSDL 配置精靈」可支援 SOAP Config MO 中的 Use 內容, 但是如果「SOAP 要求 BO」與對應之「SOAP 回應 BO」中的 Use 值不同, 就會擲出錯誤。 您可以將 Use 值設定成文字或編碼,以產生 WSDL 文件。如需 Use 內容及其值的相關資訊,請參閱Style 及 Use 對 SOAP 訊息的影響

支援 SOAP Config MO 中的 Style

就顯現為 Web 服務的協同作業而言,僅支援 rpc 樣式。 若於 SOAP Config MO 中將 Style 指定為 document,精靈就會擲出錯誤。

錯誤處理程序

「SOAP 錯誤」商業物件中的 details 屬性只能有一個子屬性。 否則公用程式會產生錯誤。

公用程式可接受「錯誤」商業物件。若發現多重「錯誤」商業物件, 公用程式會處理第一個標頭儲存區,或是預設的錯誤商業物件。處理程序如下:

標頭錯誤處理程序

標頭錯誤會被處理成 soap:headerfault (WSDL 文件 binding 區段中之 soap:header 的子元素)。 標頭錯誤是以標頭子項商業物件中的 headerfault ASI 來處理的,如下所示:

標頭處理程序

多重標頭屬性會被指定為 SOAP 標頭儲存區商業物件中的 SOAP 標頭子項商業物件。 「標頭」儲存區商業物件是以其 ASI 來識別的:soap_location=SOAPHeader。 於公用程式處理期間,會針對標頭儲存區商業物件中的每項屬性, 在 binding 區段中各建立一個 soap:header 元素,並套用下列規則:

註:
標頭儲存區商業物件可為 SOAP 要求、回應或錯誤商業物件的子項。 並沒有為 soap:header 元素指定名稱空間屬性。

elem_ns ASI 處理程序

公用程式會忽略訊息組件層次的 elem_ns ASI。 但是會將 elem_ns 用在第二層次以下的屬性。 如果有指定 elem_ns,則第二層次的商業物件屬性可定義在分開的名稱空間中。

JMS 通訊協定處理程序

WSDL 文件之 port 區段中的 SOAP/JMS 連結,包含 jms:address 元素。 以下為 jms:address 元素的範例:(字尾有 "?" 的屬性是選用屬性。)

    <jms:address
                     destinationStyle = "queue"
 jmsVendorURI = "http://ibm.com/ns/mqseries"?
 initialContextFactory = "com.ibm.NamingFactory"?
 jndiProviderURL = "iiop://something:900/wherever"?
         jndiConnectionFactoryName = "orange"
         jndiDestinationName = "fred"
 

        jmsProviderDestinationName="trash" />
 

若 LookupQueuesUsingJNDI 連接器內容的設定為 true, 則 InputQueue 內容的值對應於 SOAP/JMS 連結之 jms:address 元素的 jndiDestinationName 屬性。 jms:address 元素指定於 wsdl:port 區段中。若 LookupQueueUsingJNDI 的設定為 false, 則 jmsProviderDestinationName 屬性的設定為 InputQueue。 InputQueue 是 Listener_JMS 階層式內容下的可用連接器內容。 initialContextFactory、jndiProviderURL 及 jndiConnectionFactoryName 內容僅限指定進行同步處理程序。

HTTP 通訊協定處理程序

WSDL 文件中的範例 port 區段,如下所示:

<service name="StockQuoteWebService">
 <port name="StockQuoteWebServicePort" binding="intf:StockQuoteBinding">
 <soap:address location="http://localhost:8080/soap/servlet/messagerouter"/>
 </port>
 </service>
 

「WSDL 配置精靈」會使用主機名稱的值,以及環境定義路徑的埠。 若環境定義路徑僅包含相對路徑,但沒有主機名稱及埠,就會使用主機名稱的值, 及位於 Listener_HTTP 配置內容之下的埠內容,來指定 soap:address xml 元素中的位置屬性。

Copyright IBM Corp. 1997, 2003