前回の記事で作成したStateless Session Beanを、Entity Beanを操作してデータベースから名前を取得するように修正します。そのために、XDocletタグの修正、実装の変更、EJBの再生成を行います。
MLAdminからMLMemberを呼び出すことができるように、MLAdmin.javaのクラスレベルのXDocletタグとして@ejb.ejb-refを追加します。
/** * @ejb.bean name="MLAdmin" * jndi-name="MLAdminBean" * type="Stateless" * @ejb.ejb-ref * ejb-name="MLMember" **/
このタグにより、EJBクラス生成時に、ejb-jar.xmlのMLAdminに関する記述内に、ejb-refが記述されます。すると、MLAdminから“java:comp/env/ejb/MLMember”というCOMP_NAMEでMLMemberを参照できるようになります。
getNameメソッドの中身を、以下のように書き換えます。
/** * @ejb.interface-method * tview-type="remote" **/ public String getName(String email) { try { MLMemberHome home = MLMemberUtil.getHome(); return home.findByPrimaryKey(email).getName(); } catch (FinderException e) { e.printStackTrace(); return "NO SUCH AN EMAIL ADDRESS!"; } catch (NamingException e) { e.printStackTrace(); throw new EJBException(e); } catch (RemoteException e) { e.printStackTrace(); throw new EJBException(e); } }
今回は、Lombozが生成するMLMemberUtilを使用して簡単にホームインターフェイスを取得しています。
メールアドレスがデータベースに存在しない場合、エラー文字列"NO SUCH AN EMAIL ADDRESS!"を返します。それ以外の例外の場合には、EJBExceptionをthrowするようにしています。
XDocletのタグを修正したので、EJBを再生成します。「mlEJB」フォルダーを右クリック→「Lomboz J2EE...」→「Generate EJB Classes」を選択します。ejb-jar.xml内のMLAdminの記述内に、MLMember用のejb-ref要素が追加されていることを確認してください。
追加したEntity Beanと、修正したStateless Session BeanをJBossにデプロイし、動作確認を行ってみましょう。
前回の記事と同様に、EJBをデプロイします。「mlEJB」フォルダーを右クリック→「Lomboz J2EE...」→「Deploy Module」を選択します。
mlEJB.jarの中に、MLAdminとMLMemberの両方のEJBが含まれます。JBossはホットデプロイに対応しているため、JBoss起動中にデプロイした場合、JBossのコンソールには以下のように表示されます。
05:00:54,415 INFO [MainDeployer] Starting deployment of package: file:/C:/jboss-3.0.8/server/default/deploy/mlEJB.jar 05:00:56,228 INFO [EjbModule] Creating 05:00:56,298 INFO [EjbModule] Deploying MLMember 05:00:56,338 INFO [EjbModule] Deploying MLAdmin 05:00:56,518 INFO [EjbModule] Created 05:00:56,518 INFO [EjbModule] Starting 05:00:58,120 INFO [MLMember] Table 'mlmember' already exists 05:00:58,191 INFO [EjbModule] Started 05:00:58,191 INFO [MainDeployer] Deployed package: file:/C:/jboss-3.0.8/server/default/deploy/mlEJB.jar
MLMemberとMLAdminの両方のEJBがデプロイされていることが分かります。
JBossが起動していない場合には、「mlEJB」フォルダーを右クリック→「Lomboz J2EE...」→「Debug Server」を選択すると、Eclipse上でJBossを動作させることができます。コンソールビュー上に標準出力が表示され、動作状況を確認することができます。
続いて、クライアントからアクセスし、動作確認してみましょう。前回の記事で作成したMLAdminClient.javaを選択し、「実行」→「次を実行する」→「Java アプリケーション」を選択すると、クライアントのコンソールビュー上に標準出力として実行結果が表示されます。
山田太郎
メールアドレス「taro@nttdata.co.jp」を基に、データベース上のデータ「山田太郎」を取得することができました。
Entity Beanの開発では、Stateless Session Beanと比べると、データベース上のテーブルとのマッピングやPKクラスの作成などやらなければならない作業が増えてきます。Lombozのウィザードを使えば、これらの作業を大幅に削減することができます。また、EJBの作成に必要なファイルだけでなく、JNDI経由でホームインターフェイスを簡単に取得することができるユーティリティクラスやValue Objectの作成なども簡単に行うことができます。
今回の記事では紹介しませんでしたが、Lomboz 2.1.1からはEJB、WARに加え、EARもサポートするようになりました。無料でここまでできるプラグイン、導入しない手はありません。
次回は、開発したアプリケーションをチューニングするために、Eclipseをプロファイラへと変身させるプラグインについて紹介します。
金子 崇之(かねこ たかゆき)
現在、株式会社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.