パート4:Java EEコンテナの内部と外部でのファサードのテスト
このシナリオでは、EJB 3.0のアノテーション・テクニックを使用して、Entity Beanに新しいメソッドを追加します。その後で、ファサード・クライアントを作成し、Java EEコンテナの内部と外部で実行してテストを行います。
Show more or less詳細表示
ステップ1:エンティティへの新規メソッドの追加と公開
  1. Red」ボタンをクリックし、「HR_EJB_JPA」を選択して実行中のアプリケーションを停止します。

    実行中アプリケーションの停止
  2. Red」ボタンをクリックし、「IntegratedWebLogicServer」を選択してWebLogic Serverを停止します。

    WebLogic Serverの停止
  3. ViewController」ノードを閉じて、「Model」ノードを展開します。

    アプリケーション・ナビゲータ
  4. ダイアグラムの「Employees」Entity Beanをダブルクリックしてクラスのソース・コードを開き、「@Entity」ノードを展開して非表示になっていたコードを表示します。

    Entity Beanのjavaコード
  5. 最後の@NamedQuery文の末尾にカンマを追加します。次に、名前から従業員を取得する問合せをクラスに追加します。以下のコードを追加します。


    コードは次のようになります。

    @Entity
    @NamedQueries( {
    @NamedQuery(name = "Employees.findAll", query = "select o from Employees o"),
    @NamedQuery(name = "Employees.findBySal", query = "select o from Employees o where o.salary > :p_sal"),
    @NamedQuery(name = "Employees.findByName", query = "select o from Employees o where o.firstName like :p_name")
    })

    Entity Beanのjavaコード

    これらのオブジェクトがその他のJavaファイルと異なる点は、EJBエンティティとしてオブジェクトを識別するアノテーションがあることです。Show more or less詳細表示
  6. Make」アイコンをクリックして、Employees.javaクラスをコンパイルします。

    Makeアイコン

    Message - Logウィンドウにエラーが表示されていないことを確認します。

    Logウィンドウのメッセージ

  7. 以下の手順を実行して、新しいメソッドをSession Beanに追加します。

    アプリケーション・ナビゲータで「HRFacadeBean」ノードを右クリックし、コンテキスト・メニューから「Edit Session Facade」を選択します。

    コンテキスト・メニュー

  8. ダイアログの「Employees」ノードを展開します。新しい名前付き問合せのgetEmployeesFindByNameが公開可能なメソッドとして表示されていることを確認します。この問合せを選択し、「getEmployeesFindBySal」の選択を解除します。

    Specify Session Facade Optionsダイアログ

    OK」をクリックします。

  9. JDeveloperは、サンプル・クライアントを作成することでEJBをテストする手段を提供します。テストを実行するには、「HRFacadeBean」を右クリックし、コンテキスト・メニューから「New Sample Java Client」を選択します。

    コンテキスト・メニュー

  10. Application Server Connectionで「IntegratedWebLogicServer 」を選択します。

    Create Sample Java Clientダイアログ

    クライアントが作成され、コード・エディタで開かれます。 Show more or less詳細表示
  11. HRFacadeClientクラスのコードを確認し、以下のように値パラメータとして"P%"を追加することで、getEmployeesFindByName()メソッドで報告されているエラーを修正します。

    HRFacadeClientのJavaコード

    Save AllSave Allボタン」アイコンをクリックして作業内容を保存します。

  12. アプリケーション・ナビゲータで「HRFacadeBean」を右クリックします。次に、コンテキスト・メニューから「Run」を選択して、WebLogic Server内のファサードBeanを起動します。

    コンテキスト・メニュー

    WebLogic Serverが開始するまで待機します。

    実行ログ・ウィンドウ

    組込みのOracle WebLogic Serverは、JDeveloper内で実行されます。Show more or less詳細表示
  13. HRFacadeClient」を右クリックし、コンテキスト・メニューから「Run」を選択します。

    コンテキスト・メニュー

  14. ログ・ウィンドウは、クライアントに含まれる3つのメソッドに基づいて、データベース・データを返します。

    実行ログ・ウィンドウに返された情報

  15. findByName()メソッドの結果表示を改善するには、HRFacadeClient.java クラスで、getEmployeesFindAll()メソッドに対応したforループとgetDepartmentsFindAll()に対応したforループをコメント・アウトします。コードは次のようになります。

    HRFacadeClientのJavaコード

  16. Makeボタン「Makeボタン」をクリックしてクラスを再コンパイルし、エラーが返されないことを確認します。

  17. HRFacadeClient」クラスを右クリックし、コンテキスト・メニューから「Run」を選択します。

    コンテキスト・メニュー

  18. ログ・ウィンドウには、'P%'句によって返される行が表示されます。

    実行ログ・ウィンドウに返された情報

ステップ2:Java EEコンテナ外部でのJavaサービスの実行
永続性ユニットは、コンテナの内部または外部で実行するように構成できます。EJB 3.0では、アプリケーション・サーバーを使用することなく、Pure Java SE環境のエンティティを実行できます。これを実行する理由は、単純なJava SEテストベッドを作成して(JUnitを使用)、アプリケーション・サーバーでの配置/実行のオーバーヘッドがない状態でエンティティの動作をテストするためです。他には、Swingアプリケーションをローカルで実行する場合があるためです。
ここでは、従業員レコードおよび部門レコードを検索するメソッドを実装したSession Beanを作成します。
  1. 新しい永続性ユニットを作成して、Java EEコンテナの外部でJavaサービスを実行します。

    META-INFの「persistence.xml」を右クリックし、コンテキスト・メニューから「New Java Service Facade」を選択します。

    コンテキスト・メニュー

  2. Java Service Classパネルでは、新しい永続性ユニットを作成するか(次のパネル)、既存のユニットを使用するかを選択できます。「Choose a Persistence Unit or Create one in the next Panel」を選択し、「Generate a Sample Java Client 」チェック・ボックスを選択します。

    Java Service Facadeメソッドのステップ1

    Next」をクリックします。

  3. 永続性ユニットにoutsideという名前をつけます。「JDBC Connection」を選択します。JDBC connectionがHRに設定されていることを確認してください。

    Java Service Facadeメソッドのステップ2

    Next」をクリックします。

  4. すべてのメソッドがデフォルトで選択されています。次に示すとおり、いくつかのメソッドの選択を解除します。

    Java Service Facadeメソッドのステップ3

    Next」→「Finish」をクリックします。

  5. ソース・エディタ・ウィンドウのJavaServiceFacadeClientクラスに対して、getEmployeesFindByNameメソッドのパラメータとして"P%"を追加します。メソッドは次のようになります。

    (List<Employees>)javaServiceFacade.getEmployeesFindByName("P%")

    JavaServiceFacadeClientクラス
  6. Makeボタン「Makeアイコン」ボタンをクリックして、クラスをコンパイルし作業内容を保存します。

  7. アプリケーション・ナビゲータで「JavaServiceFacadeClient」ノードを右クリックし、コンテキスト・メニューから「Run」を選択します。

    コンテキスト・メニュー

  8. ログ・ウィンドウは、Java EEコンテナの外部で実行されるクラスの実行結果を表示し、取得した最初のレコード(Pat Fay)のlastNameを返します。

    実行ログ・ウィンドウ

  9. META-INFの「persistence.xml」ノードをダブルクリックして、ファイルの内容を表示します。

    アプリケーション・ナビゲータ

  10. 両方の永続性ユニットが表示されます。Java EE内部のデフォルトの永続性ユニットとJava EE外部の新しい永続性ユニットが実行されます。「Source」タブをクリックして、詳細を確認します。

    永続性ユニット
  11. ソース・コードには、作成された2つの永続性ユニット(Modeloutside)が含まれています。

    永続性ユニットのソース・コード
まとめ
このチュートリアルでは、WebアプリケーションでEJB/JPAを使用する方法について学習しました。このチュートリアルで学習した内容は、以下のとおりです。 Java EEアプリケーションの詳細は、下記のWebサイトを参照してください。

Bookmark Print すべて表示 | すべて非表示
トップへ戻る

このページはお役に立ちましたでしょうか。



Copyright © 2011, Oracle and/or its affiliates. All rights reserved.?