< 上一個課程 | 下一個課程 >

第 2.2 課:將員工表連結至 Web 服務資料來源

My Company Directory 應用程式可顯示目錄中所有現行員工的記錄清單。 這些記錄顯示在含有姓氏、名字、電子郵件和員工 ID 等可排序直欄的 JTable (employeesTable) 中。 為了取得表格的記錄,必須將 employeesTable 連結至 Web 服務資料來源範例傳回的資料物件。

資料物件、資料來源和連結程式的概觀

為了取得本端資料物件供 employeesTable 使用,您將利用視覺化編輯器,將資料來源新增至應用程式。 資料來源會連接至 Web 服務 Proxy 範例,且會探索您的應用程式能夠使用的服務方法。 之後,您將選擇從資料來源提供的 getLightEmployeeRecord 服務方法。 最後,您會將應用程式中的 employeesTable 連結至列資料物件 (lightEmployeeRecordRows) 中傳回的欄位。

您可以利用 Java 視覺化編輯器的內建連結程式類別,又快又容易地建立所有這些資料來源和資料物件。 當您將視覺化元件連結至資料 Factory 時,視覺化編輯器會提供一組產生在專案中的通用介面和類別。 依預設,連結程式類別會產生在名稱為 jve.generated 的套件中。 視覺化編輯器會將連結程式類別提供成一項通用實作,供您進一步自訂和加強來配合您的應用程式需求。 這個指導教學示範預設連結程式類別基本又簡單的用法所擁有的功能和彈性。

重要: 開始這個練習之前,最好先閱讀下列說明主題。這些主題有助於進一步瞭解 Java 視覺化編輯器所提供的資料物件、資料來源及連結程式背後的功能和邏輯:
  • 資料連結程式概觀
  • 連結程式 API 參照

在這個指導教學中,您將在應用程式中使用 Web 服務資料來源、若干類型的資料物件,以及若干類型的連結程式。 將這些物件的實例新增至應用程式時,視覺化編輯器會將必要的類別新增至專案的 jve.generated 套件中, 您可以在此延伸、取代或改寫資料連結邏輯。Java 視覺化編輯器提供了連結物件的視覺化支援,它會在設計視圖的開放式區域中,顯示應用程式所用的資料物件、資料來源和連結程式。視覺化編輯器會在視覺化元件和資料物件及資料來源之間繪製線條來顯示任何所選物件的現行連結。

下圖是視覺化元件、連結程式、資料物件和資料來源如何互動的簡單概觀。 您在這個指導教學中建置的應用程式說明稍微複雜且較有創意的連結程式用法。 這個圖不一定能完全如實反映您在建置的應用程式範例中的連結程式、資料物件和資料來源。

圖 1. 這個圖型示範視覺化元件、連結程式、資料物件及資料來源之間的關係。這個圖型說明視覺化元件、連結程式、資料物件及資料來源之間的關係

在圖 1 中,每個視覺化元件都有它自己的連結程式會將它關聯於資料物件,如果是按鈕,則是關聯於資料來源。 文字欄位的連結程式會將該欄位連結到資料物件的特定內容。這個圖解中的列資料物件和資料物件,都會直接呼叫資料來源的服務來取得其資料。文字欄位的資料物件會利用表格中所選的列中的鍵值來作為呼叫 Service2 的引數,這個呼叫會傳回完整的記錄,其中可能包括表格中所選列的詳細資訊。之後,這個完整記錄又用來作為按鈕呼叫 Service3 時,按鈕動作連結程式的引數,Service3 可能是更新欄位中所輸入之值的方法。如果需要資料物件、資料連結程式和資料來源的詳細說明,請遵循先前所提供的鏈結。

利用提供的 WSDL 檔在專案中產生 Web 服務 Java Proxy

如果要使用在伺服器中執行的 Web 服務,您的 Java 應用程式需要一個與它互動的 Java Proxy 或用戶端。 您可以利用「Web 服務用戶端」精靈和 WSDL 檔,在 Java 專案中產生一個 Java Proxy。 您的 MyDirectory 專案包括將用來產生這個 Proxy 的 EmployeeDirectory.wsdl 檔。 產生 Java Proxy 之後,您可以建立代表 Web 服務的資料來源,並開始連結視覺化元件。

重要: 這個練習中所用的 WSDL 檔假設您將 Web 服務部署在本端安裝的 WebSphere Application Server,且 localhost 使用預設埠 (http://localhost:9080)。 如果您以不同的方式來部署 EAR 檔,您必須據此編輯 WSDL 檔之後,才能繼續作業。

如果要在專案中產生 Web 服務 Java Proxy,請執行下列動作:

  1. 在主功能表中,按一下檔案 > 新建 > 其他,再選取 Web 服務 > Web 服務用戶端精靈。 如果沒有出現「Web 服務」種類,請選取顯示所有精靈
  2. 使用精靈來定義 Web 服務用戶端:
    1. 服務定義中,輸入您的 MyDirectory 專案中提供的 WSDL 檔案:/MyDirectory/EmployeeDirectory.wsdl
    2. 用戶端類型欄位中,選取 Java Proxy
    3. 將滑塊列設為部署用戶端
    4. 確定已根據您正在執行的伺服器來妥善設定伺服器和 Web 服務執行時期。 這個指導教學已在使用 IBM WebSphere JAX-RPC 執行時期的 WebSphere 6.0 版和 WebSphere 6.1 版上測試過。
    5. 確定 Java Proxy 用戶端輸出至 MyDirectory 專案。

    「Web 服務用戶端」精靈

  3. 按一下完成。「Web 服務用戶端」精靈會在專案的新套件 (directory.service) 中產生 Java Proxy。

將 employeesTable 連結至 Web 服務傳回的列資料物件。

由於 employeesTable 是您在這個應用程式中連結的第一個視覺化元件,因此,您必須建立一個資料來源來指向剛新增到專案中的 Web 服務 Proxy 範例。 當您在稍後的練習中連結其他視覺化元件時,您會重複使用這個資料來源。 在這個步驟中,您將新增 Web 服務資料來源和 lightEmployeeRecordRows 資料物件。

如果要連結員工表,請執行下列動作:
  1. 在 Java Bean 視圖或設計視圖中,選取 employeesTable。(請確定您沒有選取它的 JScrollPane 母項)。 在設計區域中,employeesTable 頂端會出現一個標示為連結的小標籤。

    圖形式畫布上 JTable 的「連結」標籤。

  2. 按一下 employeesTable 的連結標籤。另外,您也可以用滑鼠右鍵按一下 employeesTable,選取連結內容
  3. 由於應用程式中沒有資料物件,因此,您必須新增一個新的資料物件。 請按一下新建資料來源資料物件
  4. 來源類型欄位中,選取 Web 服務
  5. 由於您還沒有新增任何 Web 服務資料來源到應用程式中,因此,您必須現在新增它。 在資料來源欄位旁邊,請按一下 ... 按鈕來開啟「新增 Web 服務資料來源」對話框,將會在專案中尋找可用的 Web 服務用戶端或 Proxy。
  6. 選取 EmployeeDirectory Web 服務,再按一下「完成」。這時會在 DirectoryApp.java 檔中新增新的資料來源。

    「新增 Web 服務資料來源」對話框

  7. 在「新建資料來源資料物件」對話框,在「來源服務」欄位中選取 getLightEmployeeRecords(),接受新資料物件的預設名稱:lightEmployeeRecordRows。 這個服務方法不需要任何參數。 按一下「確定」。將建立新的資料物件,並顯示在設計視圖的開放式區域。

    「新建資料來源資料物件」對話框

    提示: 由於正進行表格連結,「新建資料來源資料物件」對話框只會顯示傳回列資料物件的服務。 在這個情況下,getLightEmployeeRecords() 方法是唯一傳回物件陣列的可用服務。
  8. 在「表格資料連結」對話框中,選取 lightEmployeeRecordRows 資料物件。
  9. 現在,您必須選取 employeesTable 中所要顯示的 lightEmployeeRecordRows 資料物件的內容:

    「表格資料連結」對話框

    1. 按一下雙箭頭雙箭頭按鈕按鈕,將所有物件內容新增至表格直欄清單。
    2. 利用上移和下移鍵來依照下列次序安排直欄,由上到下分別是:lastName、firstName、email、employeeID
    3. 重新命名直欄標題:姓氏名字電子郵件員工 ID
      提示: 連結表格之後,您可以隨時返回連結內容來重新命名和重新排列直欄。
    4. 按一下確定
這時會利用 JRowTableBinder,將 employeesTable 連結至 lightEmployeeRecordRows 資料物件。 如果您在開放式區域中按一下 lightEmployeeRecordRows 資料物件,視覺化編輯器會畫一條從資料物件至表格的線。 在這條線上,JRowTableBinder 以表格連結程式表格連結程式圖示圖示來表示。 另一條線表示資料物件以 webServiceDataSource 為資料來源。

JTable 的連結程式線條視圖

課程回顧

請注意專案和應用程式的變更。在這一課,您已新增 Web 服務資料來源、列資料物件及連結程式(將 employeesTable 連結至列資料物件)。

查看專案中已建立新套件 (jve.generated) 來存放 Java 視覺化編輯器所產生的所有連結程式類別。 也請注意存放 Web 服務 Java Proxy 的新套件 (directory.service)。請描述或概述這一課學到什麼。

MyDirectory 專案中的套件

現在,當您執行 My Company Directory 應用程式時,Web 服務會在員工表填入現有的員工記錄。

< 上一個課程 | 下一個課程 >