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/jbossJBOSS_HOMEとして環境変数に登録しておく.

shell> export JBOSS_HOME=/usr/local/jboss

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/

シンボリックリンクを貼る.

shell> cd /usr/local
shell> ln -s jboss-3.2.7 jboss

通常のユーザに戻り,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> mv mysql-max-4.1.9-pc-linux-gnu-i686 /usr/local/

シンボリックリンクを貼る.

shell> cd /usr/local
shell> ln -s mysql-max-4.1.9-pc-linux-gnu-i686 mysql

データディレクトリの所有者をOSのユーザ"mysql"に変更する.

shell> cd /usr/local/mysql
shell> chown -R mysql data

スーパーユーザからmysqlにユーザを切替えて,MySQLを初期化する.

shell> su mysql
shell> ./scripts/mysql_install_db

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が実質的なユーザであり,JBossMySQLを同一マシン上に置くためこの設定とした.

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をコピーして作成する.

shell> cd xpetstore/deploy
shell> rm hsqldb-ds.xml

MySQLのデータソース設定テンプレートをdeployフォルダにコピーする.

shell> cp $JBOSS_HOME/docs/examples/jca/mysql-ds.xml .

mysql-ds.xmlの内容を編集して以下のように設定する.

shell> vi 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.xml

mySQL

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)