アプリケーションは、登録簿にある全従業員の現行レコード・リストを表示します。 このレコードは、ソート可能な列を使用して JTable (employeesTable) に、 ラストネーム、ファーストネーム、E メール、従業員 ID が表示されます。 テーブルのレコードを取得するには、サンプル Web サービスのデータ・ソース から戻されたデータ・オブジェクト に、employeesTable をバインド する必要があります。
この課題では、次の 2 つを完了する必要があります。
employeesTable に関するローカルのデータ・オブジェクト を取得して、 これで作業をするには、ビジュアル・エディターを使用し、 データ・ソース を対象のアプリケーションに追加します。 データ・ソースはサンプルの Web サービス・プロキシーに接続し、 対象のアプリケーションに使用可能なサービス・メソッドを見つけます。 次に、このデータ・ソースから使用可能な getLightEmployeeRecord サービスを選択します。 最後に、行データ・オブジェクト (lightEmployeeRecordRows) に戻されたフィールドに、 アプリケーションの employeesTable をバインド します。
Java ビジュアル・エディターに組み込みのバインダー・クラスを使用して、 これらデータ・ソースおよびデータ・オブジェクトのすべてを素早く作成することができます。 ビジュアル・エディターでは、ビジュアル・コンポーネントをデータ・ファクトリーにバインドする際に、 対象のプロジェクトに生成される汎用インターフェースおよびクラスがセットで提供されます。 バインダー・クラスは、デフォルトで jve.generated という名前のパッケージに生成されます。 ビジュアル・エディターでは、バインダー・クラスが汎用インプリメンテーションとして提供されます。 このインプリメンテーションは対象のアプリケーション・ニーズに合うように、 さらにカスタマイズおよび拡張することができます。 このチュートリアルでは、さらに基本的で単純なデフォルトのバインダー・クラスを使用して、その能力と柔軟性を紹介します。
重要: この課題を始める前に、 Java ビジュアル・エディター・セクションのヘルプ目次にある次のヘルプ・トピックを読んでおくことをお勧めします。 これらのトピックは、Java ビジュアル・エディターが提供するデータ・オブジェクト、データ・ソース、 およびバインダーの背後の機能および論理について、さらに学習することに役立ちます。
このチュートリアルでは、Web サービス・データ・ソース、数種類のデータ・オブジェクト、 数種類のバインダーを対象のアプリケーションで使用します。 このアプリケーションにこれらのオブジェクトのインスタンスを追加すると、 ビジュアル・エディターが必要なクラスを対象のプロジェクト内の jve.generated パッケージに追加します。 このプロジェクトで、データ・バインダーのロジックの拡張、交換、または書き換えができます。 Java ビジュアル・エディターは、 このアプリケーションが使用しているデータ・オブジェクト、データ・ソース、 バインダーをデザイン・ビューのフリー・フォーム域に表示して、 バインディング・オブジェクトの視覚的なサポートを可能にします。 ビジュアル・エディターは、複数のビジュアル・コンポーネント、データ・オブジェクト、およびデータ・ソースの間に線を引いて、 選択したオブジェクトの現行バインディングを表示します。
次のダイアグラムは、ビジュアル・コンポーネント、バインダー、データ・オブジェクト、 およびデータ・ソースがどのように相互作用するかを概要として簡単に示しています。 このチュートリアルでビルドするアプリケーションは、バインダーを若干複雑で、かつ創造的に使用することを説明しています。 このダイアグラムは、ユーザーがビルドしているサンプル・アプリケーション内のバインダー、データ・オブジェクト、 およびデータ・ソースを正確に示しているわけではありません。
図 1: このダイアグラムは、ビジュアル・コンポーネント、バインダー、データ・オブジェクト、 およびデータ・ソースの関係をサンプルとして簡単に示しています。
図 1 では、各ビジュアル・コンポーネントは独自のバインダーを持っており、 バインダーそのものをデータ・オブジェクトと関連付けるか、ボタンの場合では、データ・ソースと関連付けます。 テキスト・フィールドのバインダーは、データ・オブジェクト内の特定のプロパティーを指定します。 このダイアグラムにある両方のデータ・オブジェクトは、データ・ソース上のサービスに直接呼び出してデータを取り出します。 テキスト・フィールドのデータ・オブジェクトは、 テーブルで Service2 を呼び出すための引き数として選択した行のキー値を使用します。 これにより、テーブル内で選択した行について、 おそらくさらに多くの情報を含む完全なレコードが戻されます。 この完全なレコードは、Service3 を呼び出す際に、ボタンのアクション・バインダーに対して引き数として順番に使用されます。 これはフィールドに入力した値を更新するメソッドとすることもできます。 データ・オブジェクト、データ・バインダー、およびデータ・ソースの詳細な説明は、前述のリンクからアクセスできます。
サーバー上で実行中の Web サービスを実行して作業をするには、 Web サービスと対話するために、対象の Java アプリケーションに Java プロキシー、またはクライアントが必要です。 WSDL ファイルを使用すると、「Web サービス・クライアント」ウィザードを使用して、 Java プロキシーをこの Java プロジェクトに生成することができます。 対象の MyDirectory プロジェクトには、 このプロキシーを生成するために使用する EmployeeDirectory.wsdl ファイルが組み込まれています。 Java プロキシーを生成したら、Web サービスを表し、 ビジュアル・コンポーネントのバインディングを開始するデータ・ソースを作成することができます。
重要: この課題で使用する WSDL ファイルは、 ローカルにインストールした WebSphere Application Server 上に Web サービスをデプロイして、 ローカル・ホスト (http://localhost:9080) のデフォルト・ポートを使用することを前提とします。 これとは違って EAR ファイルをデプロイする場合は、課題に進む前に WSDL ファイルの対応する箇所を編集してください。
Web サービス Java プロキシーを対象のプロジェクトに生成するには、次の手順を実行します。
employeesTable は、このアプリケーションでバインディングする最初のビジュアル・コンポーネントであるため、 対象のプロジェクトに追加したばかりのサンプル Web サービス・プロキシーをポイントするデータ・ソースを作成する必要があります。 この後の課題で、その他のビジュアル・コンポーネントをバインドする場合は、このデータ・ソースを再利用します。 この手順では、Web サービス・データ・ソースと lightEmployeeRecordRows データ・オブジェクトを追加します。
従業員テーブルをバインドするには、以下の手順を実行します。
ヒント: テーブルをバインディングしているので、 「新規データ・ソース・データ・オブジェクト」ダイアログ・ボックスには、 行データ・オブジェクトを戻すサービスだけが表示されます。 この場合、getLightEmployeeRecords() メソッドは、オブジェクトの配列を戻す唯一の使用可能なサービスです。
ヒント: テーブルのバインディングが終了したら、いつでもバインディング・プロパティーに戻って、列を名前変更したり、 再配列したりできます。
これで、JRowTableBinder を使用して、employeesTable が
lightEmployeeRecordRows データ・オブジェクトにバインドされました。
フリー・フォーム域の lightEmployeeRecordRows データ・オブジェクトをクリックすると、
ビジュアル・エディターにより、データ・オブジェクトからテーブルまで線が引かれます。
この線上に、JRowTableBinder がテーブル・バインダー
のアイコンによって示されます。
もう 1 本の線は、データ・オブジェクトが webServiceDataSource をそのデータ・ソースとして使用していることを示します。
対象のプロジェクトおよびアプリケーションに加えた変更を調べます。 この課題では、Web サービス・データ・ソースと行データ・オブジェクトを追加し、 行データ・オブジェクトに employeesTable をバインドするためのバインダーも追加しました。 Java ビジュアル・エディターによって生成されたバインダー・クラスのすべてを保持するために、 対象のプロジェクトに作成された新規パッケージ (jve.generated) を注意して調べてください。 また Web サービス用の Java プロキシーを保持する新規パッケージ (directory.service) にも注目してください。
これで、 アプリケーションを実行すると、 Web サービスによって、既存の従業員レコードを持つ従業員テーブルが取り込まれます。