JBoss Application Server : MySQL Server 利用手順書 (Red Hat Enterprise Linux 4 編 ) ver 1.1
はじめに 本書は オープンソースの JavaEE サーバーである JBoss Application Server からオープンソースのデータベースである MySQL Server を利用する手順について説明します 本書では まず JBoss Application Server からデータベースを利用する際の一般的な説明を データソース というキーワードを中心に行います 次に JBoss Application Server インストール直後のサーバ設定には (minimal 以外 ) 主に JMS 関係に利用される DefaultDS というデータソースを JBoss Application Server のデフォルトデータベース と呼ぶことにし このデフォルトデータベースを MySQL Server に変更する手順を紹介します JBoss Application Server インストール直後のデフォルトデータベースは JBoss Application Server に組み込まれている HSQLDB (http://hsqldb.org/) というデータベースが使用されており この HSQLDB は JBoss Application Server と同じメモリ上で動作します HSQLDB は 100% Java で実装された単体でも動作する非常に便利で軽量なデータベースですが 主にデータベース機能の評価やアプリケーション開発時に使用するものとして想定されていますので エンタープライズ環境での使用には向いていません そのため JBoss Application Server と DefaultDS を実運用環境で使用する場合には DefaultDS が使用するデータベースは堅牢なデータベースに変更することが推奨されています したがって JBoss Application Server で JMS 関連の永続化を利用する場合には HSQLDB を MySQL Server のような実績豊富で堅牢なデータベースに変更します 最後に本書では JBoss Application Server 上のアプリケーションが MySQL Server を使用するための設定方法を紹介します 本書の範囲 本書では JBoss Application Server がデフォルトで DefaultDS データソースのデータベースとして使用している HSQLDB を MySQL Server に変更する方法 および不要となった HSQLDB を JBoss Application Server から削除する方法について説明します また JBoss Application Server 上のアプリケーションが MySQL Server を使用するための設定方法についても説明します 本書で説明する JBoss Application Server のバージョンは 4.0.5 GA とし Red Hat Enterprise Linux 4 上で動作させるものとします 本書では JBoss Application Server 及び MySQL Server のインストールに関しては説明していません 本書の構成 第 1 章 JBoss Application Server から MySQL Server を利用利用するには JBoss Application Server から MySQL Server を利用するための方法を データソース というキーワードを中心に説明します 第 2 章 JBoss Application Server と MySQL Server の環境環境 設定情報本書で説明する JBoss Application Server から MySQL Server を利用するための両者の環境や設定情報をまとめています 第 3 章 JBoss Application Server のデフォルトデータベースデフォルトデータベースを MySQL Server に変更変更するする手順 JBoss Application Server のデフォルトデータベースを HSQLDB から MySQL Server に変更する方法を説明します また 不要となった HSQLDB の削除方法についても説明します 第 4 章 JBoss Application Server 上のアプリケーションアプリケーションが MySQL Server を利用利用するためのするための設定方法 JBoss Application Server 上のアプリケーションが MySQL Server を利用するための設定方法を説明します ここでは DefaultDS データソース ( デフォルトデータベース ) とは別に アプリケーション専用の AppDS データソースを作成します 2
目次 はじめに... 2 本書の範囲... 2 本書の構成... 2 目次... 3 1. JBoss Application Server から MySQL Server を利用するには... 4 1.1. データソース (DataSource)... 4 2. JBoss Application Server と MySQL Server の環境 設定情報... 5 2.1. JBoss Application Server の環境 設定情報... 5 2.2. MySQL Server 設定情報... 5 3. JBoss Application Server のデフォルトデータベースを MySQL Server に変更する手順... 6 3.1. JBoss AS のデフォルトデータベース... 6 3.2. デフォルトデータベースの MySQL Server への変更手順... 6 3.2.1. MySQL Server 側の準備... 6 3.2.2. MySQL Connector/J の準備と JBoss AS へのインストール... 6 3.2.3. 既存のデータソースの削除... 7 3.2.4. MySQL Server 用の DefaultDS データソースの作成とデプロイ... 7 3.2.5. standardjaws.xml の設定... 8 3.2.6. standardjbosscmp-jdbc.xml の設定... 8 3.2.7. ( オプション ) login-config.xml の設定... 8 3.2.8. JMS 関連の設定... 9 3.3. HSQLDB の削除方法... 9 3.3.1. login-config.xml の設定... 9 3.3.2. HSQLDB 関連のライブラリの削除... 9 3.4. JBoss AS の起動確認... 10 4. JBoss Application Server 上のアプリケーションが MySQL Server を利用するための設定方法... 11 4.1. JBoss Application 側の準備... 11 4.2. MySQL Server 側の準備... 11 4.3. アプリケーション用データソース作成... 12 3
1. JBoss Application Server から MySQL Server を利用利用するには JBoss Application Server のような Java EE(J2EE) サーバから MySQL Server のようなデータベースを利用するには データソース (DataSource) と呼ばれる データベースを Java で表現したオブジェクト を使用する方法が一般的です したがって JBoss Application Server から MySQL Server を利用するには JBoss Application Server 上で MySQL Server 用のデータソースの設定を行う必要があります 以下にデータソースの概要を説明します 1.1. データソース (DataSource) データソース (DataSource) とは 主に MySQL Server のようなデータベースを Java の世界で表現するものです データベースにアクセスするアプリケーションは データソースオブジェクトから取得した実際のデータベースへの接続 ( セッション ) を利用してデータベースに SQL 文を発行することになります メモ : データソースの仕様 ( インターフェース ) は JDBC 仕様で定義されており その実装は通常データベースベンダーから提供される JDBC ドライバで実装されています JBoss Application Server のような Java EE サーバ上でデータソースオブジェクトを利用するには まずデータソースオブジェクトを JNDI ツリーに登録し データソースオブジェクトの JNDI 名で JNDI ツリーから目的のデータソースを検索し取得することになります つまり Java EE サーバ上のユーザプログラムがデータベースを利用できるようにするには JavaEE サーバ管理者は以下の手順を行う必要があります JavaEE サーバ管理者管理者が行うこと : 1. 利用するデータベースの接続情報を入手する 2. JavaEE サーバ上でデータベース用のデータソースの設定を行う 3. データソースを JNDI ツリーに登録する また ユーザプログラムは次のような手順でデータベースを利用することになります ユーザプログラムがデータベースデータベースを利用利用するする方法 : 1. JNDI ツリーからデータソースをデータソースの JNDI 名で検索し 取得する 2. データソースから実際のデータベースへの接続を取得する 3. 接続を利用してデータベースに対して SQL 文を発行する 4. 接続の使用が終了したら接続を閉じる 4
2. JBoss Application Server と MySQL Server の環境環境 設定情報 本章では 本書で説明するために必要な JBoss Application Server( 以下 JBoss AS) と MySQL Server の環境 設定情報をまとめています 実際にはご使用の環境に応じてそれぞれ読み替えてください なお JBoss AS と MySQL Server は本章の環境 設定情報通りにあらかじめセットアップされているものとします 2.1. JBoss Application Serverの環境環境 設定情報 表 1 JBoss AS 設定情報 では 本書で説明するために必要な JBoss AS の環境 設定情報をまとめています 実際にはご使用の環境に応じてそれぞれ読み替えてください 表 1 JBoss AS 設定情報 項目 JBoss AS ホスト名 設定 jbosshost JBoss AS が稼動する OS Red Hat Enterprise Server 4 JBoss AS を実行する J2SE(JDK) のバージョン Sun J2SE 5.0 Update 12(Linux 用 32bit バイナリ ) J2SE のインストール先ディレクトリ JBoss AS のインストール先ディレクトリ JBoss AS サーバ設定名 JBoss AS のデフォルトデータベース用データソース (JNDI 名 ) 1 アプリケーション用データソース名 (JNDI 名 ) 2 /usr/local/jdk1.5.0_12 /usr/local/jboss-4.0.5.ga Default DefaultDS AppDS 1: 3.1. JBoss AS のデフォルトデータベース のセクションで説明があります 2: 4. JBoss Application Server 上のアプリケーションが MySQL Server を利用するための設定方法 の章で説明があります 2.2. MySQL Server 設定情報 表 2 MySQL Server 設定情報 では 本書で説明するために必要な JBoss AS から MySQL Server へ接続するための MySQL Server 側の設定情報をまとめています 実際にはご使用の環境に応じてそれぞれ読み替えてください 表 2 MySQL Server 設定情報 項目 設定 データベースホスト名 mysqlhost データベース用ポート番号 3306 データベース名 jbossdb JBoss AS から MySQL サーバーにアクセスする jbossdbuser MySQL ユーザ名 上記ユーザ名のパスワード jbossdbpass 文字エンコーディング cp932 1 1 ここで設定している cp932 とは 日本語 Windows 環境で使用されてるいわゆるシフト JIS 系のコードページ 932J に対応した MySQL Server での文 字エンコーディング名です 5
3. JBoss Application Server のデフォルトデータベースデフォルトデータベースを MySQL Server に変更変更するする手順 3.1. JBoss ASのデフォルトデータベース JBoss AS をインストールすると default サーバ設定には あらかじめ DefaultDS という JNDI 名のデータソースが設定及びデプロイされています この DefaultDS データソースは JBoss AS に組み込まれている HSQLDB という 100%Java で実装された軽量データベースを利用するように設定されており 主に JMS 関連の永続化に使われています 本書では この DefaultDS データソースが利用するデータベースを JBoss AS のデフォルトデータベース と呼ぶことにします したがって JBoss AS のインストール直後は デフォルトデータベースは HSQLDB に設定されていることになります 3.2. デフォルトデータベースの MySQL Server への変更手順 本節では 3.1. JBoss AS のデフォルトデータベース で説明した JBoss AS のデフォルトデータベース つまり DefaultDS が利用するデータベースを JBoss AS 組み込みの HDSQLDB から MySQL Server に変更する手順を説明します 注意 : 本節で説明する手順を行っている間は JBoss AS は実行させず 停止させておいてください 3.2.1. MySQL Server 側の準備 2.2. MySQL Server 設定情報 の内容を基に MySQL Server 側に JBoss Application Server の DefaultDS データソースが接続できるようなデータベースとデータベースユーザーを作成します 作成手順例は以下のようになります $ cd /usr/local/mysql $ bin/mysql u root p<root ユーザのパスワード > ( 省略 ) mysql> create database jbossdb; Query OK, 0 rows affected (0.00 sec) mysql> grant all on jbossdb.* to jbossdbuser @ jbosshost -> identified by jbossdbpass ; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 3.2.2. MySQL Connector/J の準備準備と JBoss AS へのインストール JBoss AS から MySQL Server にアクセスするには MySQL Server 用の JDBC ドライバである MySQL Connector/J が必要となります MySQL Connector/J は MySQL 社により開発 提供されていますので MySQL 社のサイトから入手します 注意 : MySQL Connector/J を入手するには 使用する MySQL Server のエディションによって入手元が異なります Community Edition の場合の入手元 : http://dev.mysql.com/downloads/connector/j/5.0.html Enterprise Edition の場合の入手元 : MySQL Enterprise のサイトから入手してください MySQL Connector/J のインストールイメージを以下にようにダウンロードしたものとします 6
MySQL Connector/J のダウンロードダウンロード先 : /tmp/mysql-connector-java-5.0.6.zip MySQL Connector/J を JBoss AS にインストールするには 以下の手順で行います $ cd /tmp/ $ unzip mysql-connector-java-5.0.6.zip $ cd mysql-connector-java-5.0.6 $ cp mysql-connector-java-5.0.6-bin.jar \ > /usr/local/jboss4.0.5.ga/server/default/lib 最後のコマンドで MySQL Connector/J (mysql-connector-java-5.0.6-bin.jar) を JBoss AS(/usr/local/jboss- 4.0.5.GA/server/default/lib) にインストールしています 3.2.3. 既存のデータソースデータソースの削除 既存の HSQLDB 用の DefaultDS データソースは hsqldb-ds.xml という XML 形式のファイルで設定されています ところで JBoss AS で deploy ディレクトリ以下に置かれてデプロイされているデータソースやアプリケーション等は 通常それらのファイル ( データソースなら設定ファイル アプリケーションなら.war ファイルなど ) を deploy ディレクトリから単純に削除することでアンデプロイ ( 削除 ) することができます 既存の DefaultDS データソースを設定しているファイル (hsqldb-ds.xml) も deploy ディレクトリ以下に置かれていますので 同ファイルを削除することで DefaultDS データソースを削除 ( アンデプロイ ) することができます しかし本書では undeploy というディレクトリを deploy ディレクトリと同じ親ディレクトリ以下に作成し アンデプロイ ( 削除 ) 対象のアプリケーションやデータソースなどを deploy ディレクトリから undeoloy ディレクトリに移動させることで アンデプロイするようにします これにより アンデプロイしたものが再度必要になった場合に簡単に復活できる 現在のデプロイ ( 利用可能な状態にある ) しているものとの比較が可能等の利点があり便利です また undeploy ディレクトリは必須のものではなく undeploy ディレクトリの作成や undeploy ディレクトリ以下にファイルを置くことは JBoss AS の動作になんら影響を与えることはありません 実際の undeploy ディレクトリの作成と 既存の HSQLDB 用 DefaultDS データソースの削除手順は次のようになります $ mkdir undeploy $ mv deploy/hsqldb-ds.xml undeploy 3.2.4. MySQL Server 用の DefaultDS データソースの作成作成とデプロイ MySQL Server 用データソースを設定するためのテンプレートファイルが 以下のファイルとして JBoss AS に含まれていますので このファイルをコピーして MySQL Server 用の DefaultDS データソースを作成し JBoss AS にデプロイします MySQL Server 用データソースデータソース設定設定のテンプレートファイル : /usr/local/jboss-4.0.5.ga/docs/examples/jca/mysql-ds.xml MySQL Server 用の DefaultDS データソースの作成とデプロイ手順は次の通りです $ cp../../docs/examples/jca/mysql-ds.xml deploy/ $ vi deploy/mysql-ds.xml ( 以下の様に設定します ) <jndi-name>defaultds</jndi-name> 7
<connection-url>jdbc:mysql:/mysqlhost:3306/jbossdb?characterencoding=windows- 31J</connection-url> <driver-class>com.mysql.jdbc.driver</driver-class> <user-name>jbossdbuser</user-name> <password>jbossdbpass</password> メモ : 上記 connection-url 要素での characterencoding=windows-31j では MySQL Connector/J が文字列を扱う際の文字エンコーディングとして Java の文字エンコーディングの一つである Windows-31J を設定しています この Windows-31J は 前出の 2.2. MySQL Server 設定情報 での MySQL Server の文字エンコーディング cp932 に対応したものです 3.2.5. standardjaws.xml の設定 次に standardjaws.xml ファイル内の type-mapping 要素を以下のように設定します ここでは CMP1.1 のデータタイプの設定を行っています $ vi conf/standardjaws.xml <type-mapping>mysql</type-mapping> 3.2.6. standardjbosscmp-jdbc.xml の設定 次に standardjbosscmp-jdbc.xml ファイル内の datasource-mapping と fk-constraint 要素を以下のように設定します ここでは CMP2.0 以降のデータタイプの設定を行っています $ vi conf/standardjbosscmp-jdbc.xml <datasource-mapping>mysql</datasource-mapping>... <fk-constraint>true</fk-constraint> 3.2.7. ( オプション ) login-config.xml の設定 MySQL Server をセキュリティドメインとして使用する場合には login-config.xml ファイル内の policy 要素以下に 次のような application-policy 要素を追加追加します $ vi conf/login-config.xml <policy>... <!-- For changing DefaultDS to MySQL --> <application-policy name = "MySqlDbRealm"> <authentication> <login-module code = "org.jboss.resource.security.configuredidentityloginmodule" flag = "required"> <module-option name = "principal">jbossuser</module-option> <module-option name = "username">jbossuser</module-option> <module-option name = "password"> 任意のパスワード </module-option> <module-option name = "managedconnectionfactoryname">jboss.jca:service=localtxcm,name=defaultds</moduleoption> </login-module> </authentication> </application-policy> 8
注意 : 上記で追加した 任意のパスワード の箇所には MyqlDbRealm( 任意の名前 ) をセキュリティポリシーとして使用するサービス (web コンソールなど ) 用のパスワードを任意の文字列で設定します この 任意のパスワード は 2.2. MySQL Server 設定情報 記載の JBoss AS から MySQL サーバーにアクセスするためのパスワード 項目とは異なります 3.2.8. JMS 関連の設定 最後に 以下のように JMS 関連の設定ファイルを作成 設定します $ mv deploy/jms/hsqldb-jdbc2-service.xml undeploy/ $ cp../../docs/examples/jms/mysql-jdbc2-service.xml deploy/jms/ $ vi deploy/jms/mysql-jdbc2-service.xml ( 以下のように MySqlDS を DefaultDS に変更します ) <depends optional-attributename="connectionmanager">jboss.jca:service=datasourcebinding,name=defaultds</depen ds> $ mv deploy/jms/hsqldb-jdbc-state-service.xml deploy/jms/mysql-jdbc-stateservice.xml 以上までの手順で JBoss AS のデフォルトデータベース (DeafultDS データソースが使用するデータベース ) を MySQL Server に変更することができました 3.3. HSQLDBの削除方法 4.1. DefaultDS を MySQL Server 用に変更 での手順が完了すれば DefaultDS データソース用のデータベースとしての HSQLDB は不要となります HSQLDB を JBoss AS から削除するには本節で説明する手順を実行してください 注意 : 本節で説明する手順を行っている間は JBoss AS は実行させず 停止させておいてください 3.3.1. login-config.xml の設定 login-config.xml ファイルの中で name 属性が HsqlDbRealm と設定されている application-policy 要素全体をコメントアウトします $ vi conf/login-config.xml <!-- <application-policy name = "HsqlDbRealm"> </application-policy> --> 3.3.2. HSQLDB 関連のライブラリライブラリの削除 次の 2 つの HSQLDB 関連のライブラリを削除 (undeploy ディレクトリに退避 ) します $ mv lib/hsqldb.jar lib/hsqldb-plugin.jar undeploy 9
以上の手順で JBoss AS から HSQLDB を削除することができました 3.4. JBoss ASの起動確認 run.sh を実行して JBoss AS を起動します 注意 : JBoss AS の DefaultDS が MySQL Server 用に設定されている為 JBoss AS を起動する前に 必ず MySQL Server を起動させておいてください $ cd /usr/local/jboss-4.0.5.ga/bin $./run.sh 18:21:29,148 INFO [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 56s:123ms run.sh を実行したターミナル上で ERROR メッセージが表示されず 上記のようなメッセージが表示されることを確認してください また server.log ファイルにも ERROR メッセージが記録されていないことを確認してください $ grep ERROR log/server.log $ 以上で JBoss AS の起動確認は完了です 10
4. JBoss Application Server 上のアプリケーションアプリケーションが MySQL Server を利用するためのするための設定方法 JBoss AS 上のデプロイされたアプリケーションは 3.1. JBoss AS のデフォルトデータベース で説明した JBoss AS のデフォルトデータベース つまり DeafultDS データソースを利用することもできますが 通常は JBoss AS 自体が使用するデータベース (DeafaultDS) とアプリケーションが使用するデータベースは別のものにするのが一般的です そこで本章では JBoss AS 上のアプリケーション専用の MySQL 用データソースを作成 設定する手順を紹介します 注意 : 本章で説明する手順を行っている間は JBoss AS は実行させず 停止させておいてください 4.1. JBoss Application 側の準備 JBoss AS の環境は 2.1. JBoss Application Server の環境 設定情報 の 表 1 JBoss AS 設定情報 に記載の通りとします また JBoss AS 上のアプリケーションが使用するデータソース (JNDI 名 ) は 同表の アプリケーション用データソース名 (JNDI 名 ) に記載されている通り AppDS とします また 3.2.2. MySQL Connector/J の準備と JBoss AS へのインストール に記載の手順によって JBoss AS に Connector/J (MySQL Server 用 JDBC ドライバ ) がインストールされているものとします 4.2. MySQL Server 側の準備 下表 表 3. MySQL Server 設定情報 ( アプリケーション用 ) の内容を基に JBoss AS 上のアプリケーションが利用する AppDS データソースが接続できるようなデータベースとデータベースユーザーを MySQL Server 側に作成します 表 3 MySQL Server 設定情報 ( アプリケーション用 ) 項目 設定 データベースホスト名 mysqlhost データベース用ポート番号 3306 データベース名 appdb JBoss AS から MySQL サーバーにアクセスする appuser MySQL ユーザ名 上記ユーザ名のパスワード appuserpass 文字エンコーディング cp932 作成手順例は以下のようになります $ cd /usr/local/mysql $ bin/mysql u root p<root ユーザのパスワード > ( 省略 ) mysql> create database appdb; Query OK, 0 rows affected (0.00 sec) mysql> grant all on appdb.* to appuser @ jbosshost -> identified by appuserpass ; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 11
4.3. アプリケーション用データソースデータソース作成 アプリケーションが使用するデータソースの作成方法は 3.2.4. MySQL サーバー用の DefaultDS データソースの作成とデプロイ での手順とほぼ同じです 表 1 JBoss AS 設定情報 や 表 3. MySQL Server 設定情報 ( アプリケーション用 ) を基に アプリケーション用の AppDS データソースの作成とデプロイ手順は次の通りです なお データソース設定ファイルのファイル名は app-ds.xml としています $ cp../../docs/examples/jca/mysql-ds.xml deploy/app-ds.xml $ vi deploy/app-ds.xml ( 以下の様に設定します ) <jndi-name>appds</jndi-name> <connection-url>jdbc:mysql:/mysqlhost:3306/appdb?characterencoding=windows- 31J</connection-url> <driver-class>com.mysql.jdbc.driver</driver-class> <user-name>appuser</user-name> <password>appuserpass</password> 12
お問い合わせはカスタマーインフォメーションセンターへ 03-5304-6660 月 ~ 金 9:00~19:00 土 10:00~18:00( 日 祝祭日 年末年始および 5/1 を除く ) Linux/ オープンソース製品に関する情報は http://www.hp.com/jp/linux/ 記載されている会社名および商品名は 各社の商標または登録商標です 記載事項は 2007 年 4 月現在のものです 本書に記載された内容は 予告なく変更されることがあります HP 製品とサービスに対する保証は それらに付属する保証書に記載された事項に限られます ここに記載した内容は一切追加の保証を意味するものではありません 本書中の技術的あるいは編集上の誤り 省略に対して いかなる責任も負いかねますのでご了承ください (c) Copyright 2007 Hewlett-Packard Development Company,L.P. 日本ヒューレット パッカード株式会社 102-0076 東京都千代田区五番町 7