EJBをテストするには、EJBインスタンスを作成または検索し、そのリモート・インタフェース・メソッドを呼び出すことができるクライアント・プログラムを実行する必要があります。JDeveloperで提供されているサンプル・クライアント・ユーティリティを使用すると、簡単にクライアントを作成できます。EJBの実行とテストには、組込みサーバーまたはリモート・サーバーを使用できます。
-
赤のボタンをクリックし、「IntegratedWebLogicServer」を選択してWebLogic Serverを停止します。
-
「ViewController」プロジェクトを閉じて、「Model」プロジェクトを展開します。
-
Employees.javaをダブルクリックしてクラスのソース・コードを開き、「@Entity」ノードを展開して非表示になっていたコードを表示します。
-
最後の@NamedQuery文の最後にカンマを追加します。次に、名前から従業員を取得する問合せをクラスに追加します。以下のコードを追加します。
@NamedQuery(name = "Employees.findByName", query = "select o from Employees o where o.firstName like :p_name")
コードは次のようになります。
@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")
})
これらのオブジェクトがその他のJavaファイルと異なる点は、EJBエンティティとしてオブジェクトを識別するアノテーションがあることです。詳細表示
-
Makeアイコンをクリックして、Employees.javaクラスをコンパイルします。
Message - Logウィンドウにエラーが表示されていないか確認します。
-
以下の手順を実行して、新しいメソッドをSession Beanに追加します。
アプリケーション・ナビゲータで「HRFacadeBean」ノードを右クリックし、コンテキスト・メニューから「Edit Session Facade」を選択します。
-
ダイアログの「Employees」ノードを展開します。新しい名前付き問合せのgetEmployeesFindByNameが公開可能なメソッドとして表示されていることを確認します。「getEmployeesFindByName」を選択し、「getEmployeesFindBySal」の選択を解除して、「OK」をクリックします。
-
アプリケーション・ナビゲータで「HRFacadeBean.java」を右クリックし、「New Sample Java Client...」を選択します。
-
Create Sample Java Clientペインで、デフォルト値を受け入れて「OK」をクリックします。
-
2点修正する必要があります。
1つ目に、メソッドではパラメータを使用するため、パラメータの値を追加する必要があります。
コード内で、"/* FIXME: Pass parameters here */"までスクロールします。getEmployeesFindByNameメソッドで、"p%"をパラメータとして追加します。作業の完了後、コードは次のように表示されます。
(List<Employees>) hRFacade.getEmployeesFindByName("p%") /* FIXME:Pass parameters here */)
-
2つ目に、次のコードをコピーし、クラスの最後に貼り付けます。
一部のimport文をコードに追加する必要もあります。
private static Context getInitialContext() throws NamingException {
Hashtable env = new Hashtable();
// WebLogic Server 10.x connection details
env.put( Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory" );
env.put(Context.PROVIDER_URL, "t3://127.0.0.1:7101");
return new InitialContext( env );
}
-
「」Save Allアイコンをクリックして作業内容を保存します。
-
アプリケーション・ナビゲータで「HRFacadeBean」を右クリックします。次に、コンテキスト・メニューから「Run」を選択して、WebLogic Server内のファサードBeanを起動します。
WebLogic Serverが開始するまで待機します。
組込みのOracle WebLogic Serverは、JDeveloper内で実行されます。このサーバーを使用すると、素早く簡単にEJBの実行とテストを行い、EJBを変更せずにデプロイできます。 -
「HRFacadeClient」を右クリックし、コンテキスト・メニューから「Run」を選択します。
-
findByName()メソッドの結果の表示を改善するには、HRFacadeClient.javaクラスで、getEmployeesFindAll()メソッドに対応したforループとgetDepartmentsFindAll()メソッドに対応したforループをコメント・アウトします。コードは次のようになります。
-
「」Makeボタンをクリックしてクラスを再コンパイルし、エラーが返されないことを確認します。
-
「HRFacadeClient」クラスを右クリックし、コンテキスト・メニューから「Run」を選択します。
-
ログ・ウィンドウには、'P%'句によって返される行が表示されます。
ログ・ウィンドウに次のメッセージが表示された場合に、サーバーは停止されています。
JDeveloperは、サンプル・クライアントを作成することでEJBをテストする手段を提供します。テストを実行するには、通常は「HRFacadeBean」を右クリックし、コンテキスト・メニューから「New Sample Java Client」を選択します。ただし、JDeveloperの現在のバージョンにはバグがあり、コンテキスト・メニューからサンプル・クライアントを生成するオプションは正常に動作しません。以下の手順は、この問題の解決に役立ちます。この問題の詳細は、リリース・ノートを参照してください。
ログ・ウィンドウは、クライアントに含まれる3つのメソッド(getDepartmentsFindAll()、getEmployeesFindAll()、getEmployeesFindByName())に基づいて、データベースのデータを返します。
ここでは、従業員レコードおよび部門レコードを検索するメソッドを実装したSession Beanを作成します。
-
新しい永続性ユニットを作成して、Java EEコンテナの外部でJavaサービスを実行します。
META-INFの「persistence.xml」を右クリックし、コンテキスト・メニューから「New Java Service Facade」を選択します。
-
Java Service Classパネルでは、新しい永続性ユニットを作成するか(次のパネル)、既存のユニットを使用するかを選択できます。「Choose a Persistence Unit or Create one in the next Panel」を選択し、「Generate a Sample Java Client」チェック・ボックスにチェックを入れて、「Next」をクリックします。
-
永続性ユニットにoutsideという名前をつけます。「JDBC Connection」を選択し、JDBC接続がHRに設定されていることを確認します。「Next」をクリックします。
-
すべてのメソッドがデフォルトで選択されています。次に示すメソッドのみを選択し、「OK」をクリックします。
ソース・エディタ・ウィンドウのJavaServiceFacadeClientクラスに対して、getEmployeesFindByNameメソッドのパラメータとして"P%"を追加します。この文は次のようになります。
(List<Employees>)javaServiceFacade.getEmployeesFindByName("P%")
-
「」Makeボタンをクリックして、クラスをコンパイルし作業内容を保存します。
-
アプリケーション・ナビゲータで「JavaServiceFacadeClient」ノードを右クリックし、コンテキスト・メニューから「Run」を選択します。
-
ログ・ウィンドウは、Java EEコンテナの外部で実行されるクラスの実行結果を表示し、取得した最初のレコード(Pat Fay)のlastNameを返します。
-
META-INFの「persistence.xml」ノードをダブルクリックして、ファイルの内容を表示します。
-
永続性エディタが開き、デフォルトではModel - Persistence Unitが表示されます。ブレッドクラム・ナビゲーションをクリックして、両方の永続性ユニットを表示します。
-
「Source」タブをクリックして、作成された両方の永続性ユニット(Modelとoutside)のコードを表示します。
「Next」をクリックし、「Finish」をクリックします。
- EJBダイアグラマを使用したEJB 3.0によるデータ・モデルの構築
- ビュー・プロジェクトの構築
- UIへの新規メソッドの追加と公開
- Java EEコンテナの内部と外部でのファサードBeanのテスト