アプリケーションは、登録簿にある現行の全従業員レコードのリストを表示します。 このレコードは、ソート可能な列を使用して JTable (employeesTable) に、 ラストネーム、ファーストネーム、E メール、従業員 ID が表示されます。 テーブルのレコードを取得するには、サンプル Web サービスのデータ・ソース から戻されたデータ・オブジェクト に、employeesTable をバインド する必要があります。
この課題では、以下の 2 つのステップを完了する必要があります。
作業対象の employeesTable に関するローカルのデータ・オブジェクト を取得するには、ビジュアル・エディターを使用し、 データ・ソース をアプリケーションに追加します。 データ・ソースは、サンプルの Web サービス・プロキシーに接続し、 アプリケーションに使用可能なサービス・メソッドを見つけます。 次に、このデータ・ソースから使用可能になる getLightEmployeeRecord サービスを選択します。 最後に、行データ・オブジェクト (lightEmployeeRecordRows) に戻されたフィールドに、 アプリケーションの employeesTable をバインド します。
Java ビジュアル・エディターに組み込まれたバインダー・クラスを使用して、 これらデータ・ソースおよびデータ・オブジェクトのすべてを素早く作成することができます。 ビジュアル・エディターは、ユーザーがビジュアル・コンポーネントをデータ・ファクトリーにバインドする際に、 ユーザーのプロジェクトに生成される汎用インターフェースおよびクラスのセットを提供します。 バインダー・クラスは、デフォルトで jve.generated という名前のパッケージに生成されます。 ビジュアル・エディターは、 ユーザーがユーザーの必要に合うようにさらにカスタマイズおよび拡張することができる汎用インプリメンテーションとしてのバインダー・クラスを提供します。 このチュートリアルは、さらに基本的で単純なデフォルトのバインダー・クラスの能力と柔軟性を明示します。
重要: この課題を始める前に、是非以下のヘルプ・トピックをお読みになるようお勧めします。 これらのトピックは、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 サービスによって、既存の従業員レコードが従業員テーブルに取り込まれます。