JBoss 4.0.x の DB2/400 サポート

JBoss の 4.0.1 RC1 から docs/examples/jca に db2-400-ds.xml というファイルが存在します。

内容を見てみると、以下のように JTOpen の Type4 JDBC ドライバーを使用した時の設定ファイルになっています。
もともときちんと DB2/400 用のデータ・マッピングの定義などはあったのですが、これで他のデータベースと同様に doc\example\jca にある XXX-ds.xml ファイルを server\[構成]\deploy ディレクトリにコピーしてちょっと修正するだけで使えるようになりました。

今回は、このファイルを使用して JBoss 4.0.x で DB2/400 を使用するやり方を見ていきたいと思います。
3.2.x の時の記事も参考にしてみてください。いろんなものがより DB2/400 に対してラクになっています。


db2-400-ds.xml をコピーして修正し、新しい JNDI 名のデータソースを作成したものと、デフォルトで定義されているデータソース (DefaultDS) をこの db2-400-ds.xml のコピーを使って修正したものと、二つのデータソースを使用するようにしてみました。

JBoss の設定を格納するものを含む、いわゆるデフォルトのデータソース (DefaultDS) と、新規に EJB をデプロイする時に改めて指定する新規のデータソースを分ける、ということになります。

サーバー構成は "default" を使用しました。

db2-400-ds.xml のコピーと編集

db2-400-ds.xml を docs\examples\jca からコピーします。

今回は新規データソース用と DefaultDS 用に二つの -ds.xml ファイルが必要になりますので、コピーしたものをさらにコピーして適当な名前に変更しておきます。

それぞれの内容を環境にあわせて編集します。

アクセスするシステム名 (ホスト名)、EJB などで対応するテーブル等が格納されるスキーマ (ライブラリー)、そしてアクセスするためのユーザープロフィール名とパスワードを指定します。

こちらが、db2-400-ds.xml をコピーして必要なところのみを修正した新規データソースの定義になります。

db2-400-ds.xml

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

<!-- ===================================================================== -->
<!--                                                                       -->
<!--  JBoss Server Configuration                                           -->
<!--                                                                       -->
<!-- ===================================================================== -->

<!-- $Id: db2-400-ds.xml,v 1.1.4.2 2004/10/27 18:44:10 pilhuhn Exp $ -->

<!-- You need the jt400.jar that is delivered with IBM iSeries Access or the
     OpenSource Project jtopen.

     [systemname] Hostame of the iSeries
     [schema]     Default schema is needed so jboss could use metadat to test if the tables exists
  -->

<datasources>
  <local-tx-datasource>
    <jndi-name>DB2-400</jndi-name>
    <connection-url>jdbc:as400://as400e/JBossEJB;extended dynamic=true;package=jbpkg;package cache=true;package library=jbossEJB;errors=full</connection-url>
    <driver-class>com.ibm.as400.access.AS400JDBCDriver</driver-class>
    <user-name>JB4</user-name>
    <password>PWD4</password>
    <min-pool-size>0</min-pool-size>
        <!-- sql to call when connection is created
        <new-connection-sql>some arbitrary sql</new-connection-sql>
        -->

        <!-- sql to call on an existing pooled connection when it is obtained from pool 
        <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
        -->
      <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
      <metadata>
         <type-mapping>DB2/400</type-mapping>
      </metadata>


  </local-tx-datasource>

</datasources> 

こちらが、db2-400-ds.xml をコピーして DefaultDS 用に修正したデータソースの定義になります。
今回は DefaultDS 用のものと新規のデータソース (DB2-400) 用のものでライブラリー (スキーマ) を異なるものにしています。

また、これを作成すると既存の Hypersonic SQL での DefaultDS の定義が競合してしまいます。
その Hypersonic SQL での DefaultDS の定義である hsqldb-ds.xml を削除するのを忘れないようにしておいてください。

db2-400-default-ds.xml

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

<!-- ===================================================================== -->
<!--                                                                       -->
<!--  JBoss Server Configuration                                           -->
<!--                                                                       -->
<!-- ===================================================================== -->

<!-- $Id: db2-400-ds.xml,v 1.1.4.2 2004/10/27 18:44:10 pilhuhn Exp $ -->

<!-- You need the jt400.jar that is delivered with IBM iSeries Access or the
     OpenSource Project jtopen.

     [systemname] Hostame of the iSeries
     [schema]     Default schema is needed so jboss could use metadat to test if the tables exists
  -->

<datasources>
  <local-tx-datasource>
    <jndi-name>DefaultDS</jndi-name>
    <connection-url>jdbc:as400://as400e/JBoss;extended dynamic=true;package=jbpkg;package cache=true;package library=jboss;errors=full</connection-url>
    <driver-class>com.ibm.as400.access.AS400JDBCDriver</driver-class>
    <user-name>JB4</user-name>
    <password>PWD4</password>
    <min-pool-size>0</min-pool-size>
        <!-- sql to call when connection is created
        <new-connection-sql>some arbitrary sql</new-connection-sql>
        -->

        <!-- sql to call on an existing pooled connection when it is obtained from pool 
        <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
        -->
      <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
      <metadata>
         <type-mapping>DB2/400</type-mapping>
      </metadata>


  </local-tx-datasource>

</datasources> 

CMP 用の SQL 仕様の修正

server\default\conf\standardjbosscmp-jdbc.xml を修正します。(3.2.x の時の記事も参考にしてみてください。ここはほぼ同じです)

datasource-mapping が "Hypersonic SQL" になっています。

これを "DB2/400" に変更します。

実は <!-- で囲まれているのはコメントの印です。
"optional" ではありますが、コメントをはずして有効にしておきましょう。

server\default\conf\standardjaws.xml も同様に修正します。

JMS 管理テーブル作成用の SQL の修正

JBoss は DefaultDS と定義されたデータソースに JMS 管理用のテーブルをいくつか作成します。

その作成のための SQL 文などの定義は server\[構成]\deploy の中にあり、雛形が docs\examples\jms にあります。

雛形を docs\examples\jms から server\default\deploy にコピーします。

Hypersonic SQL 用の hsqldb-jdbc3-service.xml を db2-jdbc3-service.xml と名前を変えてコピーしています。
定義が競合してしまうので、この時点で既存の hsqldb-jdbc2-service.xml を削除しておきます。

BLOB_TYPE=OBJECT_BLOB という行があります。
とりあえず調査中なのですが BLOB_BLOB という値にしてあります。

カラムの指定で OBJECT とありますが、BLOB に変更する必要があります。

CREATE CACHED TABLE とありますが、CREATE TABLE にする必要があります。

こちらも同様に CREATE CACHED TABLE とありますが、CREATE TABLE にする必要があります。

JDBC ドライバーのコピー

JTOpen の jar ファイルを server\default\lib にコピーします。

DB2/400 側のデータベース・スキーマ作成

DB2/400 側でデータベース・スキーマを用意しておきます。

db2-400-ds.xml で JBossEJB と指定したので JBOSSEJB というスキーマを、db2-400-default-ds.xml で JBoss と指定したので JBOSS というスキーマをそれぞれ CREATE SCHEMA 文で作成します。

また、スクリーンショットは取ってありませんが JB4 というユーザーを PWD4 というパスワードで作成しておきます。
これも上記の -ds.xml ファイルに指定してありますので、作成しておかないとエラーになります。

JBoss の起動と確認

bin ディレクトリから run と実行すると、JBoss が起動されます。

エラーなしに「JBoss (MX MicroKernel) [4.0.3RC2 (build: CVSTag=Branch_4_0 date=200508131404)] Started in Xm:XXs:XXXms」というメッセージにたどり着いたら OK です!

iSeries 側にアクセスを行っているのが確認できます。

DefaultDS 用に指定したライブラリーである JBOSS には、こんなテーブルが作成されています。

上記の結果を確認するために使用した SQL 文はこんなかんじのものです。

[Top Pageに戻る]

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