JBoss 3.2.7 + MySQL 4.1.9 による構築 および デフォルトデータソースの変更方法
Neverbird Wikiなどを見るとJBoss+PostgreSQLを行う場合の設定方法などが載っています.しかしJBoss+MySQLについては,こういった基本的な誰もが必要とするであろう情報もほとんど見掛けません.特に,デフォルトのデータソースをMySQLに変更する方法とかは軽くgoogleで調べてみましたがありませんでした.
ならばオープンソースの精神に則って,ということで自分の所のメモを公開します.JBoss 3.x系の最新バージョンであるJBoss 3.2.7,MySQL 4.1系およびConnector/J 3.1系の最新であるMySQL 4.1.9とConnector/J 3.1.6を使用した場合のそれぞれのセットアップ方法とデフォルトのデータソースの変更方法についてです.
以下の情報をもしご利用される方がいらっしゃった場合,次の2点に御留意ください.
- 個人(筆者:mir)の自由裁量で公開している情報であり内容の保証は行っていないこと
- 利用するプロダクトやバージョンが異なる場合については未検証であること
とまあ堅く書きましたが「まったく情報が無いよりはまし」程度に気軽に考えていただければ,ということです.本人の手による本人の環境での実機検証に勝る検証はないわけでして.
※間違い等ありましたらツッコミいただければ幸いです.
今回使用したプロダクトとバージョン
SuSE Linux 9.1
Sun JDK 1.4.2_03
JBoss 3.2.7
MySQL 4.1.9
Connector/J 3.0.16ga
セットアップ作業の流れ
1. JBoss 3.2.7のセットアップ
2. MySQL 4.1.9のセットアップ
3. JBoss 3.2.7のデフォルトのデータソースをMySQL 4.1.9に変更する
[JBossのインストール]
事前に,/usr/local/jbossをJBOSS_HOMEとして環境変数に登録しておく.
JBoss-3.2.7.tar.gzをsourceforge.netからダウンロードし,/home/mir/download/jbossなどの任意のディレクトリに置く.
アーカイブを展開する.
shell> cd /home/mir/download/jboss
shell> tar -zxvf jboss-3.2.7.tar.gz
展開したファイルをスーパユーザで/usr/local/にコピーする
shell> su
password:********shell> mv jboss-3.2.7 /usr/local/
シンボリックリンクを貼る.
通常のユーザに戻り,JBossをデフォルトで起動させてインストールの成功を確認する.
shell> su - mir
shell> cd $JBOSS_HOME/bin
shell> ./run.sh
途中で何のエラーも出力されずに以下のようなログが最後に出力されていればインストール成功.
11:17:58,273 INFO [Server] JBoss (MX MicroKernel) [3.2.7 (build: CVSTag=JBoss_3_2_7 date=200501280217)] Started in 41s:239ms
JBossを終了させる場合には,JBossを起動したコンソールでctrl+cを押す.
[MySQLのインストール]
事前にOSのユーザとして,mysqlを作成しておく.
shell> useradd mysql
mysql-max-4.1.9-pc-linux-gnu-i686.tar.gzをmysql.comからダウンロードし,/home/mir/download/mysqlなどの任意にディレクトリに置く.
アーカイブを展開する.
shell> cd /home/mir/download/mysql
shell> tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
展開したファイルをスーパーユーザで/usr/local/にコピーする
shell> su
password:********
シンボリックリンクを貼る.
shell> cd /usr/local
shell> ln -s mysql-max-4.1.9-pc-linux-gnu-i686 mysql
データディレクトリの所有者をOSのユーザ"mysql"に変更する.
スーパーユーザからmysqlにユーザを切替えて,MySQLを初期化する.
mysqld_safeを用い,MySQLをバックグラウンドで起動する.
shell> ./bin/mysqld_safe &
デフォルトのrootユーザで接続する.
shell> ./bin/mysql -uroot
rootユーザにパスワードを設定し,匿名ユーザを削除する.
mysql> use mysql
mysql> set password=password('password');
mysql> delete from user where User='';
mysql> flush privileges;
今回使用するユーザを新しく作成する.
このユーザはユーザ名:jboss, パスワード:passを用いてMySQLが稼働しているマシン上からのみアクセスができる.
今回はJBossが実質的なユーザであり,JBossとMySQLを同一マシン上に置くためこの設定とした.
mysql> grant all on test.* to 'jboss'@'localhost' identified by 'pass';
MySQLへの接続を切断する
mysql> quit
デフォルトで選択されるストレージエンジンをmyisamからinnodbに変更する.
shell> vi /usr/local/mysql/data/my.cnf
[mysqld] default-table-type=innodb
MySQLをシャットダウンする場合には,mysqladminを用いて以下のように行う.
shell> ./bin/mysqladmin -uroot -p shutdown
Enter password:*******
[JBossのデフォルトのデータソースをMySQLに変更する]
mysql-connector-java-3.1.6.tar.gzをmysql.comからダウンロードし,/home/mir/download/mysqlなどの任意にディレクトリに置く.
アーカイブを展開する.
shell> cd /home/mir/download/mysql
shell> tar -zxvf mysql-connector-java-3.1.6.tar.gz
今後使用するJBossのサーバ設定セットとして,defaultをベースにxpetstoreをコピーして作成する.
MySQLのデータソース設定テンプレートをdeployフォルダにコピーする.
mysql-ds.xmlの内容を編集して以下のように設定する.
DefaultDS jdbc:mysql://localhost:3306/test com.mysql.jdbc.Driver jboss pass org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
JMSで使用するデータベースがHSQLDBとなっているので,これもMySQLに置き換える.
shell> rm jms/hsqldb-jdbc2-service.xml
shell> cp $JBOSS_HOME/docs/examples/jms/mysql-jdbc2-service.xml jms/
mysql-jdbc2-service.xmlがデフォルトのデータソース名(DefaultDS)を参照するように変更する.
jboss.jca:service=LocalTxCM,name=DefaultDS
JMSで使用するデータベースをMySQLに変更したことに伴って,以下のファイル名を変更する.(このステップは行わなくとも動作可能だが,後の混乱を避けるため)
shell> mv jms/hsqldb-jdbc-state-service.xml jms/mysql-jdbc-state-service.xml
standardjaws.xmlの内容を変更する.
shell> cd ../conf
shell> vi standardjaws.xmlmySQL
standardjbosscmp-jdbc.xmlの内容を変更する.
shell> vi standardjbosscmp-jdbc.xml
mySQL
JDBCドライバ(Connector/J)を$JBOSS_HOME/server/xpetstore/libにコピーする.
shell> cp /home/mir/download/mysql/mysql-connector-java-3.1.6/mysql-connector-java-3.1.6-bin.jar $JBOSS_HOME/server/xpetstore/lib/
もしMySQLを起動していなければここで起動し,それからJBossを以下のように起動してデフォルトのデータソースの変更ができているかどうか確認する.
shell> /usr/local/mysql/bin/mysqld_safe &
shell> $JBOSS_HOME/bin/run.sh -c xpetstore
まずエラーログなどが出力さていないかどうか,また以下のように正常に起動したログが出ているかどうかを確認する.
14:10:03,171 INFO [Server] JBoss (MX MicroKernel) [3.2.7 (build: CVSTag=JBoss_3_2_7 date=200501280217)] Started in 39s:151ms
次に,MySQLへコンソールを用いて接続し,JBossMQによってMySQLが正しく利用されているかどうかを確認する.
shell> mysql -ujboss -p
password:****mysql> use test
mysql> show tables;
- +
Tables_in_test
- +
JMS_MESSAGES JMS_ROLES JMS_SUBSCRIPTIONS JMS_TRANSACTIONS JMS_USERS 5 rows in set (0.00 sec)
- +