EJBの動作確認を行うために、Lombozの機能を使用してEJBクライアントを作成してみましょう。
EJBクライアント用のライブラリが多数追加されますので、新規にプロジェクトを作成します。
「ファイル」→「新規」→「プロジェクト」→「Java」→「Javaプロジェクト」を選択し、表示されるダイアログで「プロジェクト名」を入力します。今回は「clientPrj」としました。
「次へ」をクリックし、「ソース」タブで「ソース・フォルダ」「デフォルト出力フォルダ」を設定します。今回は「clientPrj/src」「clientPrj/bin」としました。
j2eePrj内のクラスを参照可能とするため、「プロジェクト」タブで、「j2eePrj」にチェックを付けます。「終了」をクリックすると、プロジェクトが生成されます。
クライアントプロジェクトを選択し、「ファイル」→「新規」→「Lomboz EJB Test Client Wizard」を選択します。表示されるダイアログで、以下のように設定します。
ソース・フォルダ | ソースの格納場所 |
---|---|
パッケージ | クライアントクラスのパッケージ名 |
名前 | クライアントクラス名 |
スーパークラス | クライアントクラスが継承すべき親クラス名 |
Ejb Home | テスト対象のEJBホーム名 |
Ejb Interface | テスト対象のEJBインターフェイス名 |
Target Server | ターゲットとするアプリケーションサーバ |
今回は以下のように指定しました。
ソース・フォルダ | clientPrj/src |
---|---|
パッケージ | mltest |
名前 | MLAdminTest |
スーパークラス | java.lang.Object |
Ejb Home | ml.MLAdminHome |
Ejb Interface | ml.MLAdmin |
Target Server | JBOSS 3.0 |
「終了」をクリックすると、クライアントクラスの生成と、必要なライブラリの追加が行われます。
EJBクライアント作成時にスーパークラスをJUnitのTestCaseとすることで、EclipseのJUnit連携機能を活用することも可能です。その場合、プロジェクトのライブラリにECLIPSE_HOME/plugins/org.junit_3.8.1/junit.jarを追加してからクライアントを生成してください。
生成されたクライアントクラスでは、EJBのリモートインターフェイスを取得するところまでのコードが含まれています。テストしたいビジネスメソッドを呼ぶように修正します。
try { ml.MLAdmin myBean = getHome().create(); //-------------------------------------- //This is the place you make your calls. //System.out.println(myBean.callYourMethod()); System.out.println(myBean.getName("taro@nttdata.co.jp")); } catch (RemoteException e) { ...
「mlEJB」フォルダを右クリック→「Lomboz J2EE...」→「Debug Server」を選択すると、Eclipse上でJBossを動作させることができます。
コンソールビュー上に標準出力が表示され、動作状況を確認できます。
20:34:52,324 INFO [Server] JBoss (MX MicroKernel) [3.0.8 (CVSTag=JBoss_3_0_8 Date=200306050849)] Started in 0m:25s:367ms
のように表示されれば、JBossが起動しました。続いて、クライアントからアクセスし、動作確認をしてみましょう。
作成したMLAdminClient.javaを選択し、「実行」→「次を実行」→「Java アプリケーション」を選択すると、クライアントのコンソールビュー上に標準出力として実行結果が表示されます。
taro
EJBファイルに対してブレークポイントを設定しておけば、ステップ実行なども可能です。
今回はLombozプラグインを使用したStateless Session Beanの作成とデプロイ、テストクライアントを使用した接続確認を行いました。XDoclet単体でもEJBを効率的に開発することはできますが、LombozではXDocletをラップした環境を提供してくれるため、メニュー処理により、より簡単にEJBを開発することができます。
次回はデータベースへのアクセスを行うEntity Beanの作成について解説します。
金子 崇之(かねこ たかゆき)
現在、株式会社NTTデータ ビジネス開発事業本部に所属。技術支援グループとして、J2EEをベースにしたWebシステム開発プロジェクトを対象に、技術サポートを行っている。特に、性能・信頼性といった方式技術を中心に活動中。
岡本 隆史(おかもと たかし)
NTTデータ 技術開発本部 所属。Debian GNU/Linuxの優れたメンテナンス性と他のディストリビューションを圧倒するパッケージ数に引かれDebianを使い始めたのをきっかけに、Debian プロジェクトの開発者となりJavaサポートの強化を行う。『Jakartaプロジェクト徹底攻略』(技術評論社)、『WEB+DB PRESS』(技術評論社)、『Java World』(IDGジャパン)、『JAVA Developer』(ソフトバンクパブリッシング)などで執筆活動を行っている。
Copyright © ITmedia, Inc. All Rights Reserved.