J2EE アプリケーションの互換性 (RDB の変更)

「EJB + J2EE 入門 -JBoss と Struts で作る Web アプリケーション- 」のサンプルアプリケーション (EJB+Struts) を、使用する RDB を JBoss 付属の Hypersonic DB から DB2/400 に変えて稼動させてみました。(アプリケーションサーバーは JBoss のまま)

結論から言うと、たいへん簡単に変更は行え、特に問題なく稼動しました。実質的にはデータソース定義ファイルの変更のみです。
やはり EJB といい Struts といい、J2EE アプリケーションの可搬性というのはたいしたものなんですね。


J2EE アプリケーションの互換性

EJB は CMP であれば Java のコンポーネントそのものは変更なしで、データベースを変更したり、アプリケーションサーバーそのものを変えたりすることができます。

Web アプリケーションもデータソースを使って標準的な JDBC コーディングをしている限りはかなりの可搬性があると考えられますが、SQL の違いや取得するデータの属性などについてはちょっとした違いが問題になるケースがありますので、CMP の EJB ほどではないでしょうね。

アプリケーションサーバーの変更

アプリケーションサーバーを変更する場合は、必ずプラットフォーム固有のファイルがありますのでそれを作成しなくてはなりません。
一から作るのはけっこう大変なことが多く、XDoclet などを使用して生成させるのが手段としては考えられます。

データベースのみの変更

データベースのみを変更するのはそれほど大変なことではありません。(サポートされているデータベースに限りますが)
既存の資源 (たいていはデータソース) の JNDI 名とアプリケーションで予期している資源 (データソース) の JNDI 名のマッピングを jboss-web.xml や jboss.xml を使って変更するか、新たに資源を作成するか、くらいの作業で行えます。

どちらで行うかは後述しますが、アプリケーション/実行環境上の要件や作業量から決めればいいでしょう。

このサンプルでは ant の実行中にデータベースの作成とデータソース定義ファイルのコピーを行っています。
ant を実行するという操作は変えないとすると、build.xml の修正が必要になります。
修正はまた今度考えるとして、データベースの作成やデータソース定義ファイルの修正は今回手動で行います。


テストに使った環境

DB2/400 は V5R2 (V5R1 でもやってみましたが OK でした)、JBoss は 3.2.2RC3 で default の環境、データベースへの接続は JBoss を PC 等で稼動させる場合も OS/400 で稼動させる場合も両方使えるように JTOpen での接続環境を使用しています。
(JTOpen の接続環境といっても特に大変ではなく、ただ jt400.jar をサーバーの lib ディレクトリ (JBoss-3.2.2RC3\server\default\lib) にコピーしてあるだけです)

あまり iSeries につなぎっぱなしにしてテストできなかったので、画面例の大半は PC で JBoss を実行し、データベースを JBoss のデフォルトも含めてすべて DB2/400 用に構成した環境でのものです。

ant の実行

まずは最初に ant を実行してしまってください。

ant で作成される ear ファイルはそのまま使用可能です。
(実際に ant で作成した ear ファイルと、修正 (後述) 済みのデータソース定義ファイルを他 PC 上で稼動している JBoss に持っていっただけでちゃんと稼動しました)

データベースの作成

データベース作成用のスクリプトがありました (createdb.sql) ので、これをそのままオペレーション・ナビゲーターの「SQL スクリプトの実行」で実行させます。

createdb.sql については、最初に shopDB というスキーマを作成する以外は特に変更する必要はないのですが、SQL 文そのものにところどころ全角のブランクが入っていますので、これを除去するか半角のブランクに変更しなくてはなりません。

また、V5R2 であれば最初に SET SCHEMA SHOPDB でデフォルトのデータベースを指定でき、INSERT 文は修正することなく実行できます。
V5R1 の場合は INSERT 文の product というテーブルの指定に SHOPDB.product というようにスキーマの修飾をしてやる必要があります。

以下のようにコメントをはずして必要な文だけにして、じかに CREATE SCHEMA や SET SCHEMA を直接最初に入力してしまった方が実行は簡単ですよ。

何箇所か全角のブランクがあるため、取り除いておかないとエラーになりますのでご注意くださいませ。

ちゃんと PRODUCT テーブルが SHOPDB ライブラリーに作成されているのが確認できます。

JBoss の導入ディレクトリ下に bin\shopdb といったディレクトリができますが、内容も含めて削除してしまってください。

データソース定義ファイルの変更

このアプリケーション用のデータソース定義ファイル (shop-ds.xml) が ant の実行の結果として JBoss の server\default\deploy ディレクトリにコピーされます。

このデータソース定義ファイル (shop-ds.xml) は Hypersonic DB 用に出来ているので内容を変更する必要があります。
接続用の URL とドライバーのクラス、接続に使用するユーザーとパスワード (必要であれば作成します) などを指定します。

<?xml version="1.0"?>

<!-- DataSource config for Shop sample application -->

<datasources>

  <local-tx-datasource>
    <jndi-name>ShopDS</jndi-name>
    <connection-url>jdbc:as400://domino400/shopdb</connection-url>
    <driver-class>com.ibm.as400.access.AS400JDBCDriver</driver-class>
     <user-name>J2EEONLINE</user-name>
    <password>PASSWORD</password>
    <min-pool-size>5</min-pool-size>
  </local-tx-datasource>

</datasources>

接続 URL のところでアクセスするスキーマの指定を行っています。

jdbc:as400://domino400/shopdb

アプリケーションによっては、システムに既存のデータソースをそのまま使用して、jboss.xml や jboss-web.xml でアプリケーションが使用している JNDI 名とのマッピングを行うだけでも OK なケースもあります。
たとえば、この時の構成で jboss.xml を以下のように変更すると

      <resource-ref>
        <res-ref-name>jdbc/ShopDS</res-ref-name>
        <jndi-name>java:/DefaultDS</jndi-name>
      </resource-ref>

ユーザーは JBOSSUSER が使用され、データベーススキーマは JBOSS が使用されます。

今回は上記のように接続 URL でデータベーススキーマを SHOPDB に限定しているのと、やはりユーザーをこれ専用にしたかったので、データソースの定義そのものを変更するようにしています。

[Top Pageに戻る]

[PR] | 貴金属 買取ハウスクリーニング韓国食材転職サイトSEOアクセス解析ハウスメーカーレンタルオフィスSEO対策消費者金融不動産担保ローン時計車 買取ハワイ挙式アスクル転職生命保険テンプレート沖縄旅行動画免許合宿二輪引越し消費者金融税理士ゴルフ会員権留学レーシックマッサージFX投資信託くりっく365アフィリエイト育毛剤FXホームページ制作デイトレードFXタイバンコクハワイ レンタカーベスト ハワイ ホテル レーツバリ島年末年始ハワイHawaii hotelsHawaii Activitiesbhhrホノルルマラソン
【運営会社「パラダイムシフト」サービス】 ハワイ現地オプショナルツアーリラックマ) - ビジネスクラス航空券 - 格安航空券(1) - 格安航空券(2) - 海外ホテル - 韓国旅行
無料ホームページ作成 - レンタルサーバー - 携帯ホームページ - ブログ - ホテル 予約 - タイムシェア - ヴィラ - ハワイ コンドミニアム - バリ島 ホテル - ハワイ 不動産 - プーケット ホテル