< 前へ | 次へ >

演習 2.2: Web サービス・データ・ソースに従業員テーブルをバインドする

My Company Directory アプリケーションは、 登録簿にある現在の全従業員のレコードをリスト表示します。 このレコードはソート可能な列を持つ JTable (employeesTable) に表示されます。 ソート可能な列には、ラストネーム、ファーストネーム、E メール、従業員 ID が 含まれます。 テーブルのレコードを取得するには、サンプル Web サービスのデータ・ソース から戻されたデータ・オブジェクト に、employeesTable をバインド する必要があります。

データ・オブジェクト、データ・ソース、バインダーの概要

作業対象の employeesTable に関するローカルのデータ・オブジェクト を取得するには、ビジュアル・エディターを使用し、 データ・ソース をアプリケーションに追加します。 データ・ソースは、サンプルの Web サービス・プロキシーに接続し、 アプリケーションに使用可能なサービス・メソッドを見つけます。 次に、このデータ・ソースから使用可能になる getLightEmployeeRecord サービスを選択します。 最後に、行データ・オブジェクト (lightEmployeeRecordRows) に戻されたフィールドに、 アプリケーションの employeesTable をバインド します。

Java ビジュアル・エディターに組み込まれたバインダー・クラスを使用して、 これらデータ・ソースおよびデータ・オブジェクトのすべてを素早く作成することができます。 ビジュアル・エディターは、ユーザーがビジュアル・コンポーネントをデータ・ファクトリーにバインドする際に、 ユーザーのプロジェクトに生成される汎用インターフェースおよびクラスのセットを提供します。 バインダー・クラスは、デフォルトで jve.generated という名前のパッケージに生成されます。 ビジュアル・エディターは、 ユーザーがユーザーの必要に合うようにさらにカスタマイズおよび拡張することができる汎用インプリメンテーションとしてのバインダー・クラスを提供します。 このチュートリアルは、さらに基本的で単純なデフォルトのバインダー・クラスの能力と柔軟性を明示します。

重要: この演習を始める前に、是非以下のヘルプ・トピックをお読みになるようお勧めします。 これらのトピックは、Java ビジュアル・エディターが提供するデータ・オブジェクト、データ・ソース、 およびバインダーの背後にある機能およびロジックについて、さらに学習することに役立ちます。
  • データ・バインダーの概要
  • バインダー API 参照

このチュートリアルでは、Web サービス・データ・ソース、数種類のデータ・オブジェクト、 数種類のバインダーをユーザーのアプリケーションで使用します。 このアプリケーションにこれらのオブジェクトのインスタンスを追加すると、 ビジュアル・エディターが必要なクラスをプロジェクト内の jve.generated パッケージに追加します。 このプロジェクトで、データ・バインダーのロジックの拡張、交換、または書き換えができます。 Java ビジュアル・エディターは、 このアプリケーションが使用しているデータ・オブジェクト、データ・ソース、 バインダーをデザイン・ビューのフリー・フォーム域に表示して、 バインディング・オブジェクトの視覚的なサポートを提供します。 ビジュアル・エディターは、複数のビジュアル・コンポーネント、データ・オブジェクト、およびデータ・ソースの間に線を引いて、 任意の選択したオブジェクトの現行バインディングを表示します。

次の図は、ビジュアル・コンポーネント、バインダー、データ・オブジェクト、 およびデータ・ソースがどのように相互作用するかを単純化した概要として示しています。 このチュートリアルでビルドするアプリケーションは、バインダーのやや複雑で、かつ創造的な用法を説明しています。 この図は、ユーザーがビルドしているサンプル・アプリケーション内のバインダー、データ・オブジェクト、 およびデータ・ソースを正確に示しているわけではありません。

図 1. この図は、ビジュアル・コンポーネント、バインダー、データ・オブジェクト、 およびデータ・ソースの関係の一例を示しています。この図は、ビジュアル・コンポーネント、バインダー、データ・オブジェクト、
およびデータ・ソースの関係を示しています

図 1 では、各ビジュアル・コンポーネントは、バインダーそのものをデータ・オブジェクトと関連付けるか、ボタンの場合では、データ・ソースと関連付ける独自のバインダーを持っています。 テキスト・フィールドのバインダーは、フィールドを、データ・オブジェクトの特定のプロパティーにバインドします。 この図内の行データ・オブジェクトとデータ・オブジェクトは、両方とも、 それらのデータを、データ・ソース上のサービスへの直接呼び出しから取得します。 テキスト・フィールドのデータ・オブジェクトは、 テーブルで Service2 を呼び出すための引数として選択した行のキー値を使用します。 これにより、テーブル内で選択した行について、 おそらくさらに多くの情報を含むフル・レコードが戻されます。 次に、このフル・レコードは、Service3 を呼び出す際に、ボタンのアクション・バインダーに対して引数として使用されます。 これはフィールドに入力した値を更新するメソッドとすることもできます。 データ・オブジェクト、データ・バインダー、およびデータ・ソースの詳細な説明は、前述のリンクからアクセスできます。

提供された WSDL ファイルを使用して、Web サービス Java プロキシーをプロジェクトに生成する

サーバー上で実行中の Web サービスを対象に作業をするには、Web サービスと対話するために、Java アプリケーションに Java プロキシー、またはクライアントが必要です。 WSDL ファイルを使用すると、「Web サービス・クライアント」ウィザードを使用して、 Java プロキシーをこの Java プロジェクトに生成することができます。 MyDirectory プロジェクトには、このプロキシーを生成するために使用する EmployeeDirectory.wsdl ファイルが組み込まれています。 Java プロキシーを生成したならば、Web サービスを表すデータ・ソースを作成し、 ビジュアル・コンポーネントのバインディングを開始することができます。

重要: この演習で使用する WSDL ファイルは、 ローカルにインストールした WebSphere Application Server 上に Web サービスがデプロイされており、 localhost (http://localhost:9080) のデフォルト・ポートを使用していることを前提としています。 これとは違う方法で EAR ファイルをデプロイする場合は、 課題を進める前に、それに従って WSDL ファイルを編集してください。

Web サービス Java プロキシーをプロジェクトで生成するには、次のようにします。

  1. メインメニューで、「ファイル」 > 「新 規」 > 「その他」」の順にクリックし、 「Web サービス」 > 「Web サービス・クライアント」ウィザードの順に選択する。 Web サービスのカテゴリーが表示されていない場合は、「すべてのウィザードを表示」を選択します。
  2. ウィザードを使用して、Web サービス・クライアントを次のように定義する。
    1. サービス定義」に、MyDirectory プロジェクトで 提供された WSDL ファイルを次のように入力する: /MyDirectory/EmployeeDirectory.wsdl
    2. クライアント・タイプ」フィールドで、 「Java プロキシー」を選択する。
    3. スライダー・バーを「クライアントのデプロイ (Deploy client)」に設定する。
    4. サーバーと Web サービス・ランタイムが、実行中のサーバーに対して 正しく設定されていることを確認する。このチュートリアルは、WebSphere v6.0 と WebSphere v6.1、および IBM WebSphere JAX RPC ランタイムに対してテスト済みです。
    5. Java プロキシー・クライアントが MyDirectory プロジェクトに 出力されたことを確認する。

    「Web サービス・クライアント」ウィザード

  3. 終了」をクリックする。 「Web サービス・クライアント」ウィザードは Java プロキシーをプロジェクト内の新規パッケージ (directory.service) に生成します。

Web サービスが戻す行データ・オブジェクトに employeesTable をバインドする

employeesTable は、このアプリケーションでバインディングする最初のビジュアル・コンポーネントであるため、 ユーザーがプロジェクトに追加したばかりのサンプル Web サービス・プロキシーを指すデータ・ソースを作成する必要があります。 これより後の課題で、その他のビジュアル・コンポーネントをバインドする場合は、このデータ・ソースを再利用します。 このステップでは、Web サービス・データ・ソースと lightEmployeeRecordRows データ・オブジェクトを追加します。

従業員テーブルをバインドするには、以下のようにします。
  1. Java Bean ビューまたはデザイン・ビューで、employeesTable を選択する。 (その JScrollPane の親を選択していないことを確認します。) デザイン域の employeesTable の上部に、 「バインド」とラベル付けされた小さなタブが表示されます。

    グラフィカル・キャンバスの JTable 上の「バインド」タブ

  2. employeesTable の上にある「バインド」タブをクリックする。 代わりに、employeesTable を右クリックして、「バインディング・プロパティー」を選択することもできます。
  3. アプリケーションには、まだデータ・オブジェクトがないので、新しいデータ・オブジェクトを追加する必要がある。 「新規データ・ソース・データ・オブジェクト」をクリックします。
  4. ソース・タイプ」フィールドで、「Web サービス」を選択する。
  5. アプリケーションに Web サービス・データ・ソースをまだ追加していないので、 ここで追加する必要がある。 「データ・ソース」フィールドの隣にある 「新規...」ボタンをクリックして、「Web サービス・データ・ソースの追加」ダイアログ・ボックスを開きます。 これはプロジェクトにある使用可能な Web サービス・クライアント、またはプロキシーを探します。
  6. EmployeeDirectory Web サービスを選択して、「終了」をクリックする。 新規のデータ・ソースが DirectoryApp.java ファイルに追加されます。

    「Web サービス・データ・ソースの追加」ダイアログ・ボックス

  7. 「新規データ・ソース・データ・オブジェクト」ダイアログ・ボックスで、 「ソース・サービス」フィールド内で getLightEmployeeRecords() を選択し、 新規データ・オブジェクトのデフォルト名 (lightEmployeeRecordRows) を受け入れる。 このサービス・メソッドにパラメーターは必要ありません。 「OK」をクリックする。新しいデータ・オブジェクトが作成され、デザイン・ビューのフリー・フォーム域に表示されます。

    「新規データ・ソース・データ・オブジェクト」ダイアログ・ボックス

    ヒント: テーブルをバインディングしているので、 「新規データ・ソース・データ・オブジェクト」ダイアログ・ボックスには、 行データ・オブジェクトを戻すサービスだけが表示されます。 この場合、getLightEmployeeRecords() メソッドは、オブジェクトの配列を戻す唯一の使用可能なサービスです。
  8. 「テーブル・データのバインディング」ダイアログ・ボックスで、lightEmployeeRecordRows データ・オブジェクトを選択する。
  9. ここで、employeesTable に表示したい lightEmployeeRecordRows データ・オブジェクトのプロパティーを選択する必要があります。

    「テーブル・データのバインディング」ダイアログ・ボックス

    1. 二重矢印二重矢印ボタンボタンをクリックして、 すべてのオブジェクト・プロパティーを「テーブル列」リストに追加する。
    2. 上矢印と下矢印を使用して、上から下に次の順序で列を整理する: lastName, firstName, email, employeeID
    3. 列のタイトルを次のように名前変更する: Last name, First name, Email, Employee ID
      ヒント: テーブルのバインディングが終了したならば、いつでもバインディング・プロパティーに戻って、列を名前変更したり、 再配列したりできます。
    4. OK」をクリックする。
これで、JRowTableBinder を使用して、employeesTable が lightEmployeeRecordRows データ・オブジェクトにバインドされました。 フリー・フォーム域の lightEmployeeRecordRows データ・オブジェクトをクリックすると、 ビジュアル・エディターは、データ・オブジェクトからテーブルまで線を引きます。 この線上に、テーブル・バインダーテーブル・
バインダー・アイコン・アイコンによって、JRowTableBinder が示されます。 もう 1 本の線は、データ・オブジェクトが webServiceDataSource をそのデータ・ソースとして使用していることを示します。

JTable のバインダー線のビュー

演習のチェックポイント

プロジェクトおよびアプリケーションに加えられた変更に、注意してください。 この課題では、Web サービス・データ・ソースと行データ・オブジェクトを追加し、 行データ・オブジェクトに employeesTable をバインドするためのバインダーを追加しました。

Java ビジュアル・エディターによって生成された すべてのバインダー・クラスを保持するために、 ユーザーのプロジェクト内に作成された、 新規パッケージ (jve.generated) を調べてください。 また Web サービス用の Java プロキシーを保持する 新規パッケージ (directory.service) にも注意してください。 この演習で学習したことを、記述または要約してください。

MyDirectory プロジェクト内のパッケージ

これで、My Company Directory アプリ ケーションを実行すると、Web サービスによって既存の従業員レコードが 従業員テーブルに取り込まれるようになります。

< 前へ | 次へ >