利用 XML 開發的 Web 服務,是與「拍賣」應用程式所使用之商品資料庫互動的另一種方式。拍賣 Web 服務的使用者可以新增及刪除資料庫中的商品, 也可以檢視「拍賣」中某一個或所有現行商品的相關資訊。
所謂 Web 服務是一組可以透過網際網路發佈、尋找及呼叫的相關應用程式功能。Web 服務可讓在不同的平台上執行以及以不同語言開發的應用程式,利用 XML 型的元件交互作業。
開發 Web 服務一般有兩種做法:由上而下和由下而上。在由上而下的做法中,Web 服務是以 Web 服務說明語言 (WSDL) 和 XML 綱目定義 (XSD) 檔中所定義的 Web 服務介面和 XML 類型為基礎。接著開發人員可以修改 Skeleton 實作,來和商業邏輯連結。 在由下而上的作法中,Web 服務是根據 Java™ Bean 或 EJB 中現有的商業邏輯來建立。 其會產生 WSDL 檔來說明產生的 Web 服務介面。由上而下的做法可以對所使用的 Web 服務介面和 XML 類型有更多的控制權, 這是開發 Web 服務的建議做法。
拍賣 Web 服務是利用由上而下的做法所開發的,它會先定義 WSDL 和 XSD 檔。WSDL 檔會定義要顯現的介面、要呼叫的作業,以及在這些作業期間傳遞的訊息。WSDL 檔會參照 XSD 檔,以取得這些訊息的確實定義。
下圖說明 Web 服務的開發階段。WSDL 和 XSD 編輯器會用來定義 WSDL 和 XSD 檔。 第二個元件(Java Bean Skeleton)有三個不同的組件,皆以精靈來開發。 由於這些片段是同時產生,且會當成一個單元一起測試,因此會一起說明。
Web 服務說明語言 (WSDL) 和 XML 綱目定義 (XSD) 檔中定義的 Web 服務介面和 XML 類型, 會定義元素和其相關聯的動作,來說明 Web 服務的外觀與運作方式。
在開發拍賣 Web 服務時,會利用 XML 綱目編輯器來建立新的 XSD 檔,以定義在 Web 服務中傳遞的 XML 綱目類型。
接著,會利用「新建 WSDL 檔」精靈來建立新的 WSDL 檔,如此會建立一個使用預設樣式以及文件文字的 Skeleton WSDL 檔。這是 Web 服務交互作業能力組織 (WS-I) 所建議的選項。WS-I 是一個開放產業組織,其會發佈準則,以確保來自不同供應商的 Web 服務彼此可以交互作業。
在建立 Skeleton WSDL 檔之後,可使用 WSDL 編輯器來編輯 WSDL 檔。新的作業、訊息和組件會與一個新產生的連結一起建立在 WSDL 檔中。
「WSDL 編輯器」和 XML 綱目編輯器緊密結合,可從「WSDL 編輯器」內直接開啟,
讓 WSDL 檔中的組件可參照 XSD 檔中定義的 XML 綱目類型,如下列擷取畫面所示。
Java Bean Skeleton 是在 Web 服務精靈中從 WSDL 檔和 XSD 檔建立。 Web 服務精靈會根據 JAX-RPC 程式設計模型來產生 Java 程式碼。 它也會根據 Web Services for J2EE 規格來產生 Web 服務部署描述子。
與 Skeleton Web 服務同時建立 Java Proxy 和 JSP 範例,將更容易一次測試 Web 服務的所有元素。
建立 Web 服務 Skeleton 之後, Java 編輯器中會開啟產生的 Java Skeleton 實作檔, 內含 WSDL 檔所定義的方法的必要介面。 開發人員可以在此時修改 Skeleton 實作檔,來存取後端商業邏輯。
所產生的範例 JSP 是基本且很好運作的,其內容編排在三個頁框中。左邊的頁框含有使用者可與其互動之所有方法的清單。按一下其中一個方法即可在右上方的頁框中開啟一個輸入區。在將輸入資料鍵入表單之後,按一下「呼叫」按鈕即可呼叫用來處理該輸入的方法,並在右下方的頁框中顯示結果。
針對拍賣 Web 服務,我們變更了產生的範例 JSP 來建立在視覺上更生動的介面, 並增加了處理陣列的支援,因為當作業傳回資料庫中所有商品的清單時,會傳回一個陣列。