Home > Documentation > 4. Apache Geronimo への移行 > 4.7. JBoss to Geronimo - JDBC の移行 |
この文章は、JBoss v4 向けに開発された JDBC アプリケーションを Apache Geronimo へ移行する手助けとなります。この文章は、アプリケーション移行の様々な種類をカバーする一連の文章の一部です。
この文章は、JBoss v4 から Apache Geronimo へ JDBC アプリケーションを移行する順をおった手順の詳細だけでなく、2つのアプリケーション・サーバーの JDBC 実装の違いの詳細も書かれています。一般的な出発点(ソース環境)として、この文章には JBoss ソース環境に Online Brokerage サンプル・アプリケーションをデプロイする手順があります。次に Apache Geronimo へアプリケーションを移行、デプロイする手順を解説します。
この文章は、以下のセクションで構成されています。
JDBC 実装は各ベンダーごとにさまざまです。このセクションの目的は、JBoss と Apache Geronimo との間で JDBC 固有の機能の違いを説明することで、違いが明確になり、移行前にそれ相応に計画することができるようになります。
JBoss も Geronimo も JDBC リソースへの接続には J2CA コネクターを利用しているので、プラットフォーム固有の JDBC 機能を比較してみると、いくつかの J2CA 機能は重複しています。
メモ: Geronimo はまだ生まれたばかりなので、JBoss が提供するいくつかの機能はまだ Geronimo に実装されていないかもしれません。
機能 | Apache Geronimo | JBoss v4 |
---|---|---|
JDBC 接続 | Geronimo は JDBC による直接統合を有していませんが、一般的な J2CA フレームワークを通じての接続をサポートしています。TranQL プロジェクトは各種データベースの J2CA アダプターです。 | JBoss での JDBC 接続は、JCA 仕様に基づく JDBC コネクターを通じて行われます。 |
JCA 実装 | Geronimo は JCA 1.5 仕様をサポートし、JCA 1.0 仕様と互換性があります。 | JBoss AS 4.0 は JCA (Java Connector Architecture) 1.5 仕様を実装しています。JBoss AS 3.2 では JCA 1.0 でした。 |
データ・ソース・サポート | TranQL はデータソース、コネクション・プール・データソース、XA データソース向けの包括的なラッパーです。 | 以下の5種類のデータソースをサポートしています。
|
データソース・フェイルオーバー | TranQL は特定のデータベース(Apache Derby、Oracle や、もうすぐ DB2 も含まれます)向けに特化したドライバーで、ドライバーの拡張機能との密接な統合をもたらします。 | JBoss は2つのデータ・ソースの実装により、データ・ソースのフェイル・オーバーが可能になります。 |
XA のサポート | XA トランザクション、ローカル・トランザクション、トランザクションなしをサポートしています。 | XA トランザクション、ローカル・トランザクション、トランザクションなしをサポートしています。 |
コネクション・マネージャーの構成可能性 | J2CA フレームワークは各種コネクション・フレームワークの違う部分を組み込む異ができるインターセプターです。 | 必要に応じてカスタムのコネクション・マネージャーを組み込むことができます。 |
JTA の実装 | トランザクションのサポートは JOTM と HOWL によって与えられます。 | JBossJTA によって JTA のすべてをサポートしています。 |
コネクション・プーリングと管理 | Geronimo のコードと TranQL がコネクション・プーリングと管理に利用されます。 | JBossCX フレームワークがコネクション・プーリングと管理に利用されます。 |
以前のドライバーのサポート | Geronimo は TranQL コネクターの JDBC - JCA ラッパーを通じて以前のドライバーをサポートします。JDBC 3.0 と 2.1 をサポートしています。 | JBoss は、まだ JCA- JDBC ドライバーが実装されていない RDBMS への接続を JDBC ドライバーの JCA ラッパーによって行います。 |
この文章には、JBoss から Geronimo へアプリケーションの移行をデモンストレーションするサンプル・アプリケーションがあります。名前は Online Brokerage です。オンライン取引でユーザーが株の売買を行うシナリオです。このアプリケーションには以下の5つのページがあります。
以下の図は、アプリケーションのフローです。
最初に、ユーザーは Login ページに接続します。ログインページからユーザーはユーザー名とパスワードを入力します。ユーザー名またはパスワードが不正の場合は、アプリケーションはエラーメッセージを表示し、そのログインを拒否します。ユーザー名とパスワードが正確であれば、すべての株についてその時点の株価を見ることができる Available Stocks ページを開きます。
ユーザーは口座にある利用可能な金額に応じて、購入したい株を Buy ボタンをクリックすることで選択します。
取引が無事完了すると、Available Stocks ページ が表示され、必要ならばさらに株が購入できます。
株の購入に資金が不足していたら、アプリケーションはエラーとなり取引を進めません。エラーメッセージが Available Stocks ページの上部に表示されます。このページには User Info ボタンがあります。これをクリックすると、User Info ページが表示され、ユーザーの詳細情報が表示されます。
Available Stocks ページには、ユーザーが所有するすべての株を確認できる Portfolio へのリンクがあります。このページでは、ユーザーは株と株数を選んで売却することができます。また、User Cash 欄に現在の利用可能な現金の学が表示されています。所有している数より多くの株を売ろうとすると、アプリケーションはエラーになります。エラーメッセージが同じページ上に表示されます。売却が成功すると、売却金額がユーザーの現金に加算されます。
quantity テキストボックスにはユーザーが持っている特定の会社の株の数量が表示されています。Quantity to Sell 欄では、その会社の株の売りたい数量を入力することができます。売却と購入にはラジオボタンをチェックします。このことは数値を入力した後になされます。もし quantity to sell テキストボックスが入力されていないか、ラジオボタンがチェックされずに sell ボタンを押すと、必須入力欄が空であるという JavaScript のアラートが表示されます。数量欄に数値以外の文字が入っていると、別のアラートが表示されます。この動き方は、Available Stocks Page と同じようなものです。
新規ユーザーは、login ページで Register ボタンをクリックすることで登録できます。Registration ページでは、ユーザーID、ユーザー名、パスワード、住所と利用可能現金を入力することができます。
オンライン取引サンプル・アプリケーションには、以下のパッケージが含まれます。
オンライン取引には、以下の JSP ページを含みます。
オンライン取引アプリケーションの開発とビルドのツールは以下の通りです。
Eclipse IDE はサンプル・アプリケーションの開発に利用されています。とても強力で、人気のあるオープンソースの開発ツールです。プラグインの統合によって、JBoss と Geronimo の両方で利用可能です。Eclipse は以下の URL からダウンロードできます。
http://www.eclipse.org
Ant はピュア Java のビルド・ツールです。war ファイルをビルドし、オンライン取引アプリケーション向けデータベースを作成するために利用されています。Ant は以下の URL からダウンロードできます。
http://ant.apache.org
このアプリケーションのデモンストレーションに利用するデータベースは MySQL です。サンプル・データベース名は tradedb です。STOCKS、USERS、TRADINGACCOUNT の3つのテーブルも持ちます。各テーブルは以下のフィールドを持ちます。
Table Name | Fields |
---|---|
STOCKS | ID (PRIMARY KEY) |
USERS | USERID (PRIMARY KEY) |
TRADINGACCOUNT | USERID |
TRADINGACCOUNT テーブルは、各ユーザが所有する株を保存するために利用されます。USER と STOCKS テーブルはユーザーと株の詳細情報を保存するために利用されます。これは単にサンプル・アプリケーションですので、ユーザーの持つ金額の量は、ユーザー登録時にユーザー自身に入力してもらいます。
このデータベース生成用の DDL は db.sql です。brokerage/sql ディレクトリーにあります。
このセクションでは、サンプルの JBoss 環境がどのように、どこにインストールされるかを示すので、貴方はこのシナリオを貴方の実装に合わせることができます。
JBoss のインストール、構成と管理の詳細な説明については、JBoss のドキュメントにあります。JBoss のウェブ・サイトで最新のドキュメントをチェックしてください。
以下のリストはインストールと初期環境の構成を完了させ、サンプル・アプリケーションのデプロイの準備を完了させるまでに必要な一般的なタスクを示します。
run.sh -c <your_server_name>
コマンドを入力し、新しいサーバーを始動してください。この文章でのオンライン取引アプリケーションのビルドと実行のために、ビルド・ツールとアプリケーションが利用するデータベースをインストールし、構成する必要があります。
前述のとおり、このアプリケーションは MySQL データベースを利用しています。次の URL からダウンロードできます。
http://www.mysql.com
MySQL のインストールと構成は、かなり直感的です。MySQL リファレンス・マニュアルは次の URL からダウンロードできます。
http://dev.mysql.com/doc/mysql/en
メモ:簡単に構成するために、私はセキュリティ設定を変更し、root ユーザーに "password" というパスワードをつけました。このユーザー ID とパスワードは後ほどサンプル・アプリケーションからデータベースへ接続する際に利用されます。
MySQL のインスタンスが構成されたら、オンライン取引アプリケーションが利用するサンプル・データベースを作ります。コマンド・ラインから以下のコマンドを入力し、MySQL モニターを始動してください。
mysql -u root -ppassword
-p フラグとパスワードとの間にブランク文字がないことに注意してください。
MySQL コマンド・インターフェースが起動すると、以下のような表示になります。
MySQL コマンド・インターフェースから、以下のコマンドを入力し、tradedb サンプル・データベースを作成してください。
mysql> create database tradedb;
前述のとおり、オンライン取引アプリケーションのビルドには Apache Ant を利用しています。もしまだ Ant をインストールしていなかったら、そろそろインストールして、 <ant_home>\bin ディレクトリーをシステムの path 変数に追加してください。
Apache Ant は以下の URL からダウンロードできます。
オンライン取引アプリケーションとデータベースのビルドとデプロイを成功させるために、まずはいくつかのリソースを構成する必要があります。このセクションでは、JBoss での MySQL データ・ソースの構成方法を説明します。
オンライン取引アプリケーションはウェブ・アプリケーションです。データ・ソースとしては MySQL データベースに接続します。JBoss を MySQL と一緒に利用するために、MySQL のドライバーを JBoss サーバーのクラスパスにコピーする必要があります。ドライバーはデータベース・ベンダーから提供され、Connector/J 3.0 と呼ばれます。以下の URL からダウンロードできます。
http://dev.mysql.com/downloads/connector/j/3.1.html
ドライバーをダウンロードし、解凍したあと、mysql-connector-java-3.1.14.jar ファイルを <jboss_home>\server\<your_server_name>\lib ディレクトリーにコピーしてください。
JBoss でのデータ・ソースの構成は、XML 構成ファイルによって行われます。JBoss のインストールには MySQL を含む多くの人気のあるデータベース向けのサンプル構成ファイルを含みます。
MySQL 向けのサンプル・データ・ソース構成ファイルは mysql-ds.xml です。<jboss_home>\docs\examples\jca ディレクトリーにあります。
JBoss サーバーをデプロイしたディレクトリー (<jboss_home>\server\<your_server_name>\deploy
) に mysql-ds.xml ファイルをコピーして、以下のように編集してください。
<local-tx-datasource> タグの中にある他のすべてのタグを削除して、このファイルを保存してください。JBoss が自動的にデータ・ソースをデプロイします。
この文章でのオンライン取引アプリケーションには、アプリケーションのビルドとデータベースの生成に利用できる Ant スクリプトが含まれています。オンライン取引アプリケーションを以下の URL からダウンロードしてください。
zip ファイルを解凍すると、brokerage ディレクトリーが作られます。このディレクトリーで build.properties ファイルを開き、環境に合わせてプロパティを編集してください。以下に例を示します。
build.properties ファイルの driver.classpath を設定する際に、スラッシュ "/" を利用することに注意してください。そうしないと jar ファイルが見つかりません。
コマンド・プロンプトやシェルで、brokerage ディレクトリーに移動して、ant を実行してください。そうすると、war ファイルをビルドし、brokerage ディレクトリー直下にファイルを配置します。ant によってビルドされた war は、JBoss 固有のデプロイメント・ディスクリプターである jboss-web.xml ファイルを WEB-INF ディレクトリーに含みます。以下に例を示します。
resource-ref 要素が、web.xml 内の jdbc/TradeDB という名前で参照されるリソースと、MySQL データ・ソースのような java:jdbc/TradeDB という JNDI 名のリソースとを結びつけます。
オンライン取引アプリケーションを JBoss にデプロイするには、先ほど Ant でビルドした brokerage.war ファイルを以下に示すディレクトリにコピーします。
<jboss_home>\server\<your_server_name>\deploy
もし JBoss がすでに始動していたら、自動的にアプリケーションがデプロイされ、始動されます。そうでなければ、アプリケーションは次回始動時にデプロイされ、始動されます。
アプリケーションのテストには、ウェブ・ブラウザーを開き、以下の URL に接続してください。
http://localhost:8080/brokerage
オンライン取引アプリケーションのログイン画面が表示されます。user name 欄に j2ee 、password 欄に password を入力し、login をクリックしてください。以下の図のような available stocks ページが表示されます。アプリケーションは構成され、実行されています。
!availableStocks.jpg!
もしデータベースの root 用に他のパスワードを利用したいなら、`password' という記述にあるパスワードを書き換えてください。変更するのは以下の3箇所です。
以下の URL から Geronimo をダウンロードし、インストールしてください。
http://geronimo.apache.org/downloads.html
そこにあるリリース・ノートには、システム要件とインストール、始動方法がが明示されています。以下、この文章では Geronimo のインストール・ディレクトリーを <geronimo_home> とします。
もし JBoss と Geronimo を同じマシンで実行しようとすれば、少なくともどちらかのサーバではデフォルトのサービス・ポートを変更する必要があります。
Geronimo では、JDBC リソースは J2EE コネクターを利用して実装されています。したがって、JDBC データ・ソースのデプロイのために Geronimo 固有のデプロイメント・プランを記述する必要があります。加えて、デプロイには tranql-connector-ra-1.3.rar ファイルをデプロイヤーに与える必要があります。この RAR ファイルには、Geronimo のコネクション・プールの管理ロジックを含んでいます。
Geronimo でオンライン取引アプリケーションを実行するために、JBoss で利用したものと同じ MySQL データベース を利用します。Geronimo 環境に準備のためにするべき作業は、データ・ソースを構成するだけです。
最初に、データ・ソースのデプロイメント・プランが参照できるように Geronimo リポジトリーに MySQL データベースのドライバーをコピーします。
Geronimo リポジトリーは <geronimo_home>/repository にあります。このディレクトリーの中に、mysql/mysql-connector-java/3.1.14-bin というディレクトリーを作成し、そこに mysql-connector-java-3.1.14-bin.jar ファイルをコピーしてください。次は、データ・ソースのデプロイメント・プランを作成します。
Geronimo がサポートするデータ・ソースは以下の3種類あります。
グローバル・データ・ソース - Geronimo インスタンスにあるすべてのアプリケーションから参照できます。アプリケーション・スコープ・データ・ソース - 定義をした単一のアプリケーションから参照できます。モジュール・スコープ・データ・ソース - 定義した単一のモジュールから参照できます。
この移行の演習ではグローバル・データ・ソースを利用します。他のデータ・ソース2種類の構成と利用については、以下の developerWorks の文章を参照してください。
http://www.ibm.com/developerworks/opensource/library/os-ag-jdbc/
まず、mysql-geronimo-plan.xml という xml ファイルを作成してください。以下に示すプランをコピーして、この xml ファイルへ貼り付けてください。
上記リストに示すプランは JDBC でデータベースに接続するための J2EE コネクターをデプロイするものです。ルート要素は <connector> 要素です。この要素は、以下の4つの属性(訳注:3つしかありませんが...)を持ちます。
他の重要な要素や属性は以下の通りです。
以下の表に、config-property-setting 要素で記述する構成プロパティを示します。
Configuration Property | Meaning |
---|---|
Driver | JDBC ドライバーの完全修飾クラス名です。 |
ConnectionURL | JDBC 接続の URL です。ドライバーがサポートするパラメータを含めることができます。 例えば、MySQL では JDBC 接続 URL に |
UserName | データベースへの接続に必要なユーザー名です。 |
Password | データベースへの接続に必要なパスワードです。 |
CommitBeforeAutocommit | |
ExceptionSorterClass | 発生した例外が致命的かそうでないかの情報を与えます。 |
MySQL のデプロイメント・プランを作成したあと、デプロイヤー・ツールを実行してコネクション・プール・データ・ソースをデプロイする必要があります。
デプロイヤー・ツールを利用するには、サーバーが起動し、実行されている必要があるので、Geronimo のインスタンスを始動してください。
コマンドラインで <geronimo_home>/bin ディレクトリーに移動し、以下のコマンドを実行してください。
./deployer.cmd --user system --password manager deploy <brokerage_home>\plan\mysql-geronimo-plan.xml <geronimo_home>\repository\org\tranql\tranql-connector-ra\1.3
tranql-connector-ra-1.3.rar
このとき、brokerage_home というのは brokerage ディレクトリーのパスです。このコマンドでデータ・ソースがデプロイされます。
これで移行の準備が整いました。
Geronimo は以下のような実行時の JNDI プロパティの設定による外部のリソース(JDBC データ・ソース)への接続はサポートしていません。
これは、デプロイ時に JSR-77 に基づくコンポーネントのオブジェクト名参照の解析を行うためです。オンライン取引アプリケーションを Geronimo に移行するために、まず jboss-web.xml ファイルを Geronimo 固有の記述ファイルをである geronimo-web.xml ファイルに置き換える必要があります。
geronimo-web.xml ファイルは <brokerage_home>\web\descriptors\geronimo ディレクトリー内にあります。以下のような内容です。
例に示す通り、この構成の親は MySQL J2EE コネクターです。naming:resource-ref 要素が TradeDS データ・ソースと jdbc/TradeDB という名前を結びつけています。context-root 要素はアプリケーションのコンテキスト・ルートを定義します。
このアプリケーションを Geronimo で実行するには、たったこれだけの変更が必要となります。
Geronimo 向けに .war ファイルをビルドするために、サンプルアプリケーションにある build.properties ファイルを変更し、jboss-web.xml を取り除き、geronimo-web.xml を入れてください。server.name プロパティを geronimo に変更すれば、作業完了です。また、ビルド・スクリプト内にある geronimo.home プロパティの設定も必要です。
変更する必要のある2つの値は、以下の通りです。
server.name=geronimo
geronimo.home=<geronimo_home>
build.properties はビルド・スクリプトによって利用され、Geronimo 向けの J2EE 仕様を拾い出します。もし jboss.home プロパティがまだ有効であれば、このプロパティを設定する必要がありません。このプロパティが設定されていないか jboss.home が有効でなければ、編集エラーになります。また、あたらしいドライバーの jar を指し示す driver.classpath も設定する必要があります。コマンド・プロンプトから brokerage ディレクトリーに移動し、ant を実行してください。これで war ファイルが brokerage ディレクトリーに作成されます。
移行されるオンライン取引アプリケーションのデプロイには、Geronimo サーバーが起動し、実行中である必要があります。
コマンドラインで <geronimo_home> ディレクトリー(訳注:<geronimo_home>/bin の誤り?)に移動し、以下のコマンドを入力してください。
./deployer --user system --password manager deploy <brokerage_home>/brokerage.war
アプリケーションがデプロイされたら、ウェブ・ブラウザーを開き、以下の URL へ接続してください。
http://localhost:8080/brokerage
前に JBoss でテストしたときと同じユーザー名とパスワードでログインしてください。
この文章では、サンプル・アプリケーションを JBoss から Apache Geronimo アプリケーション・サーバーへ移行する方法を紹介しました。手順にしたがって順にアプリケーションをビルド、デプロイし、実行し、それから Geronimo 環境へ移行しました。
以下のリストでは、このサンプル・アプリケーションの移行によって見つかった大きな違いをまとめています。
Bookmark this on Delicious Digg this | Privacy Policy - Copyright © 2003-2009, The Apache Software Foundation, Licensed under ASL 2.0. |