在您建立協同作業物件,並將其觸發埠連結到 Web 服務連接器的實例之後, 即已準備好,可以使用「WSDL 配置精靈」了。 公用程式會使用您為協同作業、商業物件定義和連接器指定的連結、埠名、作業及其他資料, 來產生 WSDL 實作檔案 (*.impl.wsdl)、WSDL 介面檔 (*.wsdl) 及 xml 綱目檔 (*.xsd )。 這些檔案是一組顯現成 Web 服務的協同作業。且公用程式可讓您指定是要將這些檔案產生成個別的檔案,還是一個檔案。 該公用程式可支援 HTTP、HTTPS 及 JMS 通訊協定上的 SOAP。 可從連接器特定的內容 ProtocolListenerFramework 來擷取通訊協定接聽器組織架構的配置資訊。 這個內容也使得接聽器清單變成有效的。
如圖 58,直欄如下所示:
配置精靈會針對連結至 Web 服務連接器之協同作業物件的每個觸發埠,來建立 WSDL 作業。 作業的建立是以與此協同作業呼叫作業相關的商業物件為基礎。
配置精靈會讀取物件層次 ASI ws_eventtlo,以判斷商業物件是否為 TLO 格式。 如果 ASI 內容的設定為 true,則商業物件為 TLO。 使用該 TLO,可找到下列 WSDL 內容:
若要以 TLO 來建立 WSDL 作業,可以用兩種方式來配置協同作業,就是有對映,和沒有對映。
通常協同作業的配置是可以接受「通用商業物件 (GBO)」要求。 意即,協同作業範本觸發埠會訂閱 GBO。若要使用此案例的 TLO, 則協同作業必須連結到 Web 服務連接器,且連接器必須支援透過對映來將 GBO 轉換成 TLO 的作業。 圖 59 顯示此範例實務。
若以這個方式來配置協同作業及連接器,精靈會決定使用 TLO 商業物件, 建立 WSDL 文件中所說明的作業。 這是在視察過連接器支援的商業物件及相關對映後,所做出的決定。 對 Web 服務連接器的執行時期處理程序而言,所配置的對映必須將協同作業的 GBO 轉換成一個且只能有一個 TLO,這是很重要的。 此外,入埠對映的來源和目的地商業物件,要分別轉換成離埠對映的目的地和 來源商業物件,這也是很重要的。
精靈亦支援處理沒有對映的 TLO。 在此情況下,協同作業範本的觸發埠會直接訂閱 TLO。 因為 Web 服務連接器支援 TLO,所以不需要對映。 圖 60 說明此範例實務。
若是以這個方式來配置協同作業及連接器,精靈就會使用在協同作業中找到的 TLO 商業物件,來建立 WSDL 文件中所說明的作業。 精靈會決定不為此埠配置對映。
對非 TLO 商業物件的支援,可讓您使用預先存在的協同作業和對映,來顯現成 Web 服務。 因此,精靈亦可支援用非 TLO 格式的商業物件來建立 WSDL 作業。
和 TLO 處理程序一樣,精靈會讀取物件層次 ASI ws_eventtlo, 以判斷商業物件是否為非 TLO 格式。 若 ASI 內容不存在,或是雖然存在,但不是設定為 true,則此商業物件為非 TLO。 非 TLO 是不屬於 Web 服務 TLO 結構的任何商業物件。 若使用非 TLO,精靈會探索下列內容:
若要以非 TLO 來建立 WSDL 作業,可以用兩種方式來配置協同作業,就是有對映,和沒有對映。
通常協同作業的配置是可以接受「通用商業物件 (GBO)」要求。 同時,其中可能會有預先存在的對映,可將 GBO 從協同作業轉換成非 TLO 商業物件。 圖 62 顯示此範例實務。
於此情況下,精靈會使用非 TLO 商業物件來建立 WSDL 文件中所描述的 WSDL 作業。 對 Web 服務連接器的執行時期處理程序而言,所配置的對映必須將協同作業的 GBO 轉換成 一個且只能有一個非 TLO,這是很重要的。 此外,入埠對映的來源和目的地商業物件,要正確地分別轉換成離埠對映的目的地和 來源商業物件,這也是很重要的。
於高度特殊化的案例中,可將協同作業配置成可接受不是來自 GBO 的商業物件之要求。 在此情況下,非 TLO 是協同作業的直接商業物件,而且沒有對映存在。 圖 63 顯示此範例實務。
於此情況下,精靈會決定不為此埠配置對映,所以它會使用非 TLO 商業物件來建立 WSDL 文件中所描述的 WSDL 作業。
除非另有明確指示,否則下面一節所討論的「WSDL 配置精靈」基本需求, 適用於所有類型的物件 (TLO 及非 TLO)。 如需有關 Web 服務 TLO 之商業物件基本需求的進一步資訊,請參閱商業物件基本需求。
「WSDL 配置精靈」可支援 SOAP Config MO 中的 Use 內容, 但是如果「SOAP 要求 BO」與對應之「SOAP 回應 BO」中的 Use 值不同, 就會擲出錯誤。 您可以將 Use 值設定成文字或編碼,以產生 WSDL 文件。如需 Use 內容及其值的相關資訊,請參閱Style 及 Use 對 SOAP 訊息的影響。
就顯現為 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 元素,並套用下列規則:
公用程式會忽略訊息組件層次的 elem_ns ASI。 但是會將 elem_ns 用在第二層次以下的屬性。 如果有指定 elem_ns,則第二層次的商業物件屬性可定義在分開的名稱空間中。
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 內容僅限指定進行同步處理程序。
WSDL 文件中的範例 port 區段,如下所示:
<service name="StockQuoteWebService"> <port name="StockQuoteWebServicePort" binding="intf:StockQuoteBinding"> <soap:address location="http://localhost:8080/wbia/webservices/stockquoteservice"/> </port> </service>
「WSDL 配置精靈」會使用主機名稱的值,以及環境定義路徑的埠。 若環境定義路徑僅包含相對路徑,但沒有主機名稱及埠,就會使用主機名稱的值, 及位於 Listener_HTTP 配置內容之下的埠內容,來指定 soap:address xml 元素中的位置屬性。