HomeDocumentation > 4. Apache Geronimo への移行 > 4.2. JBoss to Geronimo - EJB-BMP 移行


エンティティー・ビーンは、データベースから読み込むことができ、複数のフィールドをデータで埋めているような、永続化された情報を表現するものとして定義されています。エンティティ・ビーンは、更新されたり、データベースへ書き戻されたりすることも可能です。エンティティー・ビーンには2種類あります。BMP(Bean-Managed Persistence) と CMP(Container-Managed Persistence) です。この文書では、BMP サンプル・アプリケーションの移行について取り扱います。この種のエンティティー・ビーンでは、読込や保存、データの検索といった永続化操作を実行するために、実際にコードを書かなければいけません。例えば、データベースに対して、select、insert、update、delete を実行する JDBC のような永続化 API を、開発者は使用する必要があります。

この文書は、次のセクションで構成されています:

BMP 実装の分析

BMP 実装はベンダーにより様々でしょう。本セクションの目的は、JBoss v4.0.5 と Apache Geronimo との間の BMP 仕様の機能比較を提供し、移行前の相違点や明確にし、それに応じて計画を立てられるようにします。

機能

JBoss v4.2.1

Apache Geronimo

EJB コンテナー

JBoss は独自の実装を使用します

Geronimo は OpenEJB を EJB コンテナーとして使用します

トップへ戻る

サンプル・アプリケーション

これは、ユーザーにローンを許可し、管理者がローンを承認/拒否する、シンプルなローン登録のアプリケーションです。顧客は、管理者がローンの承認/拒否するためにシンプルな Java アプリケーションを運用している間、Web サイト上でローンを利用可能です。BMP エンティティー・ビーンは、データベースからローン関連で永続されているデータを管理するために使用されます。それに加え、ステートレス・セッション・ビーンは、ワークフロー関連の状態をハンドルするために使用されます。

次の図は、ローン管理の Web アプリケーション・フローを示します:



ローン登録の初期画面は、Webアプリケーションがローンと最新ステータスの一覧を表示する通知ボードとして、振る舞います。顧客がローンを利用する際、登録フォームを利用可能です。ローンの登録後、保留中の間は保持されます。管理者権限を持つマネージャーはローンのステータスを更新するために、小型のアプリケーションを使用します。当該アプリケーションによって、マネージャーは、ステータスを承認するか拒否するか変更することができます。

アプリケーションのクラスと JSP ページ

  • org.apache.geronimo.samples.loan.client
    • LoanStatusChanger - 貸付の承認手続をするスタンドアローン・アプリケーション。
  • org.apache.geronimo.samples.loan.dto
    • LoanDTO - Web 層と EJB 層との間のローン関連情報に関するデータ転送オブジェクト。
  • org.apache.geronimo.samples.loan.ejb
    • LoanBean - データベースからローン関連の永続データを受け取るための BMP。
    • LoanManagerBean - ハンドルするステートレス・セッション・ビーン。
  • org.apache.geronimo.samples.loan.util
    • PropertyLoader - 異なる種類のクライアントに対してアプリケーション・サーバー関連のプロパティーを読み込みます。
  • org.apache.geronimo.samples.loan.web
    • LoanManagerDispatchServlet - フロント・エンドから Web 層へ関連アクティビティーを受け取るローンをディスパッチするサーブレット。

また、このローン管理 Web アプリケーションは、次の JSP ページを含んでいます:

  • error.jsp - 予期せぬ状況を受け取る共通のエラー画面。
  • index.jsp - アプリケーションのローン一覧へ転送します。
  • list_loans.jsp - ローン一覧とその情報を表示します。
  • register_loan.jsp - 顧客が入力するローンの登録フォーム。

使用したツール

ローン管理アプリケーションの開発および構築に使用したツールは、以下の通りです:

Eclipse

Eclipse IDE を使用してサンプル・アプリケーションは開発されました。非常に強力でポピュラーなオープンソース開発ツールであり、JBoss と Geronimo の両方にとって有効な統合プラグインです。Eclipse は次の URL からダウンロード可能です:
http://www.eclipse.org

Apache Ant

Ant は Pure Java のビルド・ツールです。war ファイルの構築やオンライン仲介業務アプリケーションのデータベースの操作に使用されます。Ant は次の URL からダウンロード可能です:
http://ant.apache.org

トップへ戻る

JBoss 環境

このセクションでは、何処にどのようにして、サンプル JBoss リファレンス環境がインストールされ、シナリオを実装に対応付けるかを示します。この移行例では JBoss v4.1.2 が使用されたことを補足しておきます。

インストール、構成、JBoss の管理の詳細な手順は、製品ドキュメントに記載されています。最も新しく更新されているドキュメントについては、製品の Web サイトを確認してください。

次の一覧は、サンプル・アプリケーションをデプロイする開始地点として、初期環境のインストールと設定を完了しなければいけない一般的なタスクを強調しています。

  1. 製品ガイドで説明されているように JBoss v4.2.1 をダウンロードしてインストールします。ここからインストール・ディレクトリーは <jboss_home> として参照されます。
  2. 初期状態の JBoss v4.2.1 アプリケーション・サーバーのコピーを作成します。<jboss_home>\server\default から <jboss_home>\server\<your_server_name> へ再帰的にコピーが行われます。
  3. <jboss_home>\bin ディレクトリーから run.sh -c <your_server_name> コマンドを実行することによって、新規サーバーを始動します。
  4. サーバーが始動したら、Webブラウザーを開き URL: http://localhost:8080 を指定して、実行していることを確認することが可能です。JBoss コンソールへアクセス可能な JBoss ウエルカム画面が表示されます。
  5. アプリケーション・サーバーが実行中であることを確認したら、次の段階は、サンプル・アプリケーションに必要なソフトウェアのインストールと設定です。この段階は次のセクションに記述されています。

必要なソフトウェアのインストールと設定

この文書に含まれる Loan BMP アプリケーションをビルドして実行させるために、ビルド・ツールおよびアプリケーションで使用されるデータベースのインストールと設定が必要です。

データベース設定の変更

このアプリケーションは JBoss バンドルの一部である HSQL データベースを使用しています。データベースを作成するためのスクリプトを変更する必要があります。<jboss_home>\server\<your_server_name>\data\hypersonic ディレクトリーにある *localDB.script*ファイルを編集してください:

サンプル HSQL データベースを作成するための次の例の内容を localDB.script ファイルの最初に追加してください。また、JBoss 固有データ配下にある config/db.sql に指定された同ファイルの終端にサンプルのデータを追加してください。

このファイルを編集する際は JBoss が実行していないことを確認してください。

Ant の構成

すでに述べたとおり、Apache Ant は Online Brokerage アプリケーションのバイナリーをビルドするために使用されます。まだ Ant をインストールしていなかったら、そのためのよい機会です。さらに、<ant_home>/bin ディレクトリーがシステムの path 変数に追加されていることも確認してください。

Apache Ant は、次のURLからダウンロード可能です:

http://ant.apache.org

XDoclet の構成

XDoclet は、構成ファイル生成のビルド・ツールとして使用します。オープンソースのコード生成エンジンです。Java の 属性指向プログラミングを可能にします。要約すると、Java ソースに対するメタ・データ(属性)を追加することによって、コードに意味を持たせることが可能となることを意味します。
XDoclet が EJB を作成するツールとして由来したとしても、汎用的なコード生成エンジンへ進化しました。XDoclet は、コアかつ非常に多くのモジュールから構成されます。新種のコンポーネントが必要となる場合、新規モジュールを書くために、かなり一方的です。
http://xdoclet.sourceforge.net/xdoclet/index.html

XDoclet の最新バージョンを解凍し、build.properties ファイルに xdoclet.home パラメータに設定してください。

サンプル・アプリケーションのビルド

この解説に含まれているローン管理アプリケーションでは、当該アプリケーションをビルドするために使用する Ant スクリプトが提供されています。次のリンクからローン・アプリケーションをダウンロードしてください:

Loan

zipファイルの解凍後、loan ディレクトリーが作成されます。そのディレクトリー内にある build.properties ファイルを開き、次の例で示されているように、あなたの環境に適合するプロパティーを編集してください:

build.properties
## Set the Geronimo 2.0 home here
geronimo.home=<geronimo_home>

## Set XDoclet 1.2.3 Home
xdoclet.home=<xdoclet_home>

ビルド・プロセスを開始する前に、config ディレクトリーの build.properties にある geronimo.homexdoclet.home エントリーに正しいパスを設定してください。

コマンド・プロンプトまたはシェルから、loan ディレクトリーへ移動し、ant jboss を実行してください。こうすると、ear ファイルがビルドされ、releases/jboss ディレクトリーにそれを直接配置します。

サンプル・アプリケーションのデプロイ

サンプル・アプリケーションをデプロイするには、loan/releases/jboss フォルダーへ作成された Loan.ear<jboss_home>/server/<your_server_name>/deploy へコピーしてください。

JBoss がすでに始動していれば、アプリケーションを自動的にデプロイし、始動します。そうでなければ、次回の始動時に、当該アプリケーションはデプロイ、始動されます。

サンプル・アプリケーションのテスト

アプリケーションをテスト実行するには、Web ブラウザーを開いて、次の URL へアクセスしてください:

http://localhost:8080/loan

ここへアクセスすると、ローンと最新ステータスの一覧を含む、ローン管理のメイン画面へ遷移します。Register リンクをクリックすると、ローン情報のデータベースに対して、ローンを追加する前にいくつかの項目を入力するローンの登録フォームへ遷移します。


ローンのステータスを変更するには、管理者は、Web アプリケーションからローンIDを検索し、以下のようにして、それをクライアント・アプリケーションに指定してあげる必要があります。
java -jar LoanStatusChanger.jar <ローンID> <ステータス>
ステータスは、次の値にしたがって変更します。以下に示すのは、適切なローンのステータスです。

  1. 0 - 保留
  2. 1 - 受付済
  3. Other - 拒否

    上記のコマンドを実行する前に <jboss-home>/client/jbossall-client.jar ファイルがクラスパスに追加されていることを確認してください。

    トップへ戻る

Geronimo 環境

以下の URL より Geronimo をダウンロードし、インストールしてください。

http://geronimo.apache.org/downloads.html

リリース・ノートでは、システム要件、インストール方法、Geronimo の始動方法に関する説明が記述されています。これ以降、Geronimo インストール・ディレクトリーのことを <geronimo_home> と記述します。

TCP/IP ポートの競合

もし同一マシン上で JBoss と Geronimo を稼動させたい場合には、少なくとも1つの初期サービス・ポートを変更してください。

トップへ戻る


段階的な移行

ローン管理サンプル・アプリケーションをビルドすると、Ant はサンプル・アプリケーションがすでに提供している JBoss の jboss.xml および Geronimo の openejb-jar.xml の両ディスクリプターをパッケージングします。これらのファイルは loan/config ディレクトリーに配置されています。

以下の例は、JBoss デプロイメント・ディスクリプターを示しています。

jboss.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">

<jboss>

   <enterprise-beans>

      <entity>
         <ejb-name>Loan</ejb-name>
         <local-jndi-name>Loan</local-jndi-name>
        <method-attributes>
        </method-attributes>
      </entity>

      <session>
         <ejb-name>LoanManager</ejb-name>
         <jndi-name>org.apache.geronimo.samples.loan.ejb.LoanManager</jndi-name>
         <local-jndi-name>LoanManager</local-jndi-name>
        <method-attributes>
        </method-attributes>
      </session>

   </enterprise-beans>

   <resource-managers>
   </resource-managers>

</jboss>

以下の例で示している Geronimo デプロイメント・プランの内容と比較してみてください。

openejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1">
	<dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2">
		<dep:moduleId>
			<dep:groupId>org.apache.geronimo.samples</dep:groupId>
			<dep:artifactId>LoanManagerEJB</dep:artifactId>
			<dep:version>1.0</dep:version>
			<dep:type>car</dep:type>
		</dep:moduleId>
		<dep:dependencies/>
		<dep:hidden-classes/>
		<dep:non-overridable-classes/>
	</dep:environment>
	<enterprise-beans>
		<session>
			<ejb-name>LoanManager</ejb-name>
			<ejb-ref>
				<ref-name>ejb/LoanLocal</ref-name>
				<ejb-link>Loan</ejb-link>
			</ejb-ref>
		</session>
		<entity>
			<ejb-name>Loan</ejb-name>
			<resource-ref>
				<ref-name>jdbc/LoanDataSource</ref-name>
				<resource-link>SystemDatasource</resource-link>
			</resource-ref>
		</entity>
	</enterprise-beans>
</openejb-jar>

明確に示されている最初の違いは、Geronimo 固有の構成が JBoss の構成よりも情報が追加されていることです。Geronimo の構成ファイルの一部は Maven 2 のビルド・スクリプトとかなり酷似しています。これらの構成ファイルには EJB の情報を持っています。JBoss では EJB のリンクに対応する ローカル JNDI 名を使用し、Geronimo では EJB 名を直接使用します。上記の違いに加え、openejb-jar.xml ファイルは jboss.xml ファイルよりも EJB リファレンス情報をはっきりと指定しています。

Web アーカイブ関連の構成ファイルにおいても、少々の違があります。

jboss-web.xml
<?xml version="1.0" encoding="UTF-8"?>


<jboss-web>

	<ejb-local-ref>
		<ejb-ref-name>ejb/LoanManagerLocal</ejb-ref-name>
		<local-jndi-name>LoanManager</local-jndi-name>
	</ejb-local-ref>
</jboss-web>
geronimo-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1" xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.1">
  <dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1">
    <dep:moduleId>
      <dep:groupId>org.apache.geronimo.samples</dep:groupId>
      <dep:artifactId>LoanManagerWeb</dep:artifactId>
      <dep:version>1.0</dep:version>
      <dep:type>car</dep:type>
    </dep:moduleId>
    <dep:dependencies/>
    <dep:hidden-classes/>
    <dep:non-overridable-classes/>
  </dep:environment>

  <naming:ejb-local-ref>
	  <naming:ref-name>ejb/LoanManagerLocal</naming:ref-name>
	  <naming:ejb-link>LoanManager</naming:ejb-link>
  </naming:ejb-local-ref>

</web-app>

jboss-web.xml は、上記で指定された JNDI 名を使用している EJB と対応付けられ、geronimo-web.xml は EJB 名を直接使用します。互いにマッピングされているリファレンス名は、サーブレットから EJB を参照するために使用されます。WAR ファイルにある web.xml ファイルには、各 EJB リファレンス名に関するより詳細な情報を含んでいます。それは、このアプリケーションにおける Geronimo および JBoss の特徴に対する共通点です。

サンプル・アプリケーションのビルド

loan ディレクトリーから以下のコマンドを実行し、移行されたサンプル・アプリケーションの Geronimo バージョンをビルドしてください。

ant geronimo

loan/releases/geronimo フォルダーに Loan.ear が作成されます。

移行されたアプリケーションのデプロイ

移行されたローン管理サンプル・アプリケーションをデプロイするには、Geronimo サーバーが始動され実行中であること、さらに、ユーザーがデータベースを操作しなければならないことを確認してください。その後、サンプル・アプリケーションをデプロイしてください。

データベースの操作

このサンプル・アプリケーションでは、アプリケーション専用データを保持するための Geronimo システム・データベースをデフォルトで使用します。
Geronimo コンソールより、以下の手順にしたがってください。

  1. 左側のコンソール・ナビゲーションから DB Manager リンクを選択します。
  2. Use DB 欄に対して SystemDatabase を選択します。
  3. テキスト・エディターから loan/config ディレクトリーにある db.sql を開き、下側にある Geronimo Specific Database SQL 欄に当該ファイルの中身をコピーします。
  4. 指定された上記の SQL コマンドの中身をテキストエリアに貼り付けし、Run SQL ボタンを押下します。

サンプル・アプリケーションのデプロイ

ブラウザーより Geronimo コンソールを開き、以下の手順にしたがってください:

  1. Console Navigation パネルから Deploy New まで下へスクロールさせます。
  2. loan/releases/geronimo フォルダーから loan.earArchive 入力欄に 指定します。
  3. Install ボタンを押下し、サーバーに対してアプリケーションをデプロイします。

サンプル・アプリケーションのテスト実行

アプリケーションをテスト実行するには、Web ブラウザーを開いて、以下の URL へアクセスしてください。

http://localhost:8080/loan

ローンのステータスを変更するには、ユーザーは Web アプリケーションより ローンID を検索し、それをクライアント・アプリケーションへ下記のように指定する必要があります。

*java -jar LoanStatusChanger.jar <ローンId> <ステータス>*

上記のコマンドを実行する前に、以下の JAR ファイルがクラスパスに追加されていることを確認してください。

  1. geronimo-kernel-2.0.x.jar
  2. geronimo-j2ee_connector_1.5_spec-1.x.x.jar
  3. geronimo-j2ee_management_1.1_spec-1.x.jar
  4. geronimo-security-2.0.x.jar
  5. cglib-nodep-2.1_3.jar
  6. openejb-core-3.0.jar

トップへ戻る


まとめ

この文書は、BMP エンティティー・ビーンを使用しているサンプル・アプリケーションの JBoss v4.2.1 から Apache Geronimo への移行方法を記述しています。アプリケーションのビルド、配置、稼動の段階的な説明にしたがって Geronimo 環境へ移行してください。

次のリストは、このサンプル・アプリケーションの移行を通した、主な相違点をまとめています。

  • JBoss の EJB jar ファイルをデプロイするために、デプロイ先のディレクトリーへ構成ファイルをコピーしておく必要がありますが、Geronimo では、デプロイヤー・ツール、コンソール、ホット・デプロイメント・ディレクトリーのどちらでも利用可能です。
  • JBoss および Geronbimo の EJB jar ファイルのデプロイメント・プランの内容は、Maven 2 ビルド・ファイルとほぼ同様な Geronimo の開始部分を除いて、ほとんど酷似しています。