実施するテスト内容に応じて、コンテナの内部および外部の両方でEJBをテストする方法は数通りあります。 EJBをテストする最も簡単な方法は、Javaサービス・ファサードを作成することです。 Javaサービス・ファサードはJava EEコンテナの外部で実行できるため、アプリケーションのデプロイまたはクライアントの作成は必要ありません。 EEコンテナの内部でテストする場合は、JDeveloperの埋込みサーバーを使用するか、アプリケーション・サーバーにデプロイしてリモートでテストできます。
EJBサービスをテストする標準の方法は、最初にアプリケーションをアプリケーション・サーバーにデプロイし、次に、セッション・ファサードを介してメソッドをコールするクライアントを作成する方法です。 ただし、EJBをテストするために必ずしもアプリケーションをデプロイする必要はなく、Javaサービス・ファサードを作成することによって、JDeveloper内でテストできます。 Javaサービス・ファサードは、ファサード・メソッド(エンティティ・マネージャを介してアクセスされるエンティティのCRUDメソッドおよびfinderメソッド)と実行可能なmain()を含んだプレーンJavaクラスです。 コンテナ外部でEJBをテストするには、コンテナ外部で実行される永続性ユニットも構成する必要があります。
コンテナ外部でEJBをテストする手順は、次のとおりです。
コンテナ外部でEJBをテストするための最初の手順は、コンテナ外部で実行されるように構成された新規永続性ユニットの作成です。
コンテナ外部で実行される永続性ユニットを作成する手順は、次のとおりです。
ナビゲータで、「persistence.xml」ファイルを右クリックし、「新規の永続性ユニット」を選択します。
「永続性ユニットの作成」ダイアログで、識別しやすいように永続性ユニットに名前を設定します。
ヒント: 永続性ユニットにはサービスおよび接続に関する情報が格納されるため、多くの場合、CusomterService-Outsideのような名前を設定するとわかりやすくなります。 |
「Java EEコンテナ外」のチェック・ボックスを選択します。
「OK」をクリックして、変更内容を保存します。
例4-11に、Customer Serviceサンプル・アプリケーションのpersistence.xmlファイルを示します。コンテナ外部で実行される新規永続性ユニットが作成されます。
例4-11 コンテナ外部で実行される永続性ユニットが記述されたpersistence.xmlファイル
<?xml version="1.0" encoding="windows-1252" ?> <persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"> <persistence-unit name="CustomerService"/> <persistence-unit name="CustomerService-Outside"> <class>org.soademo.customerservice.persistence.Address</class> <class>org.soademo.customerservice.persistence.Customer</class> <properties> <property name="toplink.jdbc.driver" value="oracle.jdbc.OracleDriver"/> <property name="toplink.jdbc.url" value="jdbc:oracle:thin:@Database_name:Port:SID_value"/> <property name="toplink.jdbc.user" value="SOADEMO"/> <property name="toplink.jdbc.password" value="A0D145248EE31051EAA1C822B80C610A"/> <property name="toplink.target-database" value="Oracle"/> <property name="toplink.logging.level" value="FINER"/> </properties> </persistence-unit> </persistence>
Javaサービス・ファサードを作成するには、Javaサービス・ファサードの作成ウィザードを使用します。
Javaサービス・ファサードを作成する手順は、次のとおりです。
ナビゲータで、「persistence.xml」ファイルを右クリックし、「新規のJavaサービス・ファサード」を選択します。
ウィザードのステップ1の「永続性ユニット」リストで、コンテナ外部で実行される作成済の永続性ユニットを選択し、「サンプル・コードを使用してmain()メソッドを生成」のチェック・ボックスを選択します。
ステップ2で、ツリー・コントロールを使用し、テストするサービス・ファサード・メソッドを選択して、「終了」をクリックします。
ヒント: Javaサービス・ファサードを作成するたびに、JDeveloperによって、JavaServiceFacadeという名前の新規サービス・ファサードが作成されます。 サービス・ファサードを保存する場合は、生成するたびに名前を変更してください。 |
最後の手順は、main()メソッドへのコードの追加、およびサービス・ファサードの実行です。
Javaサービス・ファサードを実行する手順は、次のとおりです。
ナビゲータで、Javaサービス・ファサード・クラスをダブルクリックしてJavaソース・エディタで開きます。
エディタで、main()メソッドまでスクロールし、第4.8.1.2項「Javaサービス・ファサードの作成」で生成したいずれかのセッション・ファサードをコールする新規メソッドを作成します。
エディタでファイルを右クリックし、「実行」を選択します。
たとえば、次のコードは、全顧客の電子メール・アドレスのリストを印刷するように変更されたJavaサービス・ファサードのmain()メソッドです。
例4-12 電子メール・アドレスを印刷するメソッドが含まれたJavaサービス・ファサード
public static void main(String [] args) { final JavaServiceFacade javaServiceFacade = new JavaServiceFacade(); // TODO: Call methods on javaServiceFacade here... List<Customer> customerList = javaServiceFacade.queryCustomerFindAllCustomer(); for (Customer cust : customerList) { System.out.println(cust.getEmail()); } }
JDeveloperには、EJBのテストを簡素化する埋込みサーバーがあります。 セッションBeanをテストするために、リモートでアプリケーションをデプロイする必要はありません。
埋込みサーバーを使用してEJBをテストする手順は、次のとおりです。
EJBをテストする最も簡単な方法は、Javaクライアントを作成し、そこでメソッドをコールすることです。 JDeveloperには、Javaクライアントおよびファサード・メソッドを生成するサンプル・クライアント・ユーティリティが用意されています。
サンプルJavaクライアントを作成する手順は、次のとおりです。
ナビゲータで、セッションBeanを右クリックし、「新規のサンプルJavaクライアント」を選択します。
「サンプルJavaクライアントの作成」ダイアログで、「JDeveloperの埋込みOC4Jに接続」が選択されていることを確認し、「OK」をクリックします。
Javaソース・エディタで、テストするメソッドを非コメント化するか、独自のメソッドを作成します。