[Subsonic Airlines] WildFlyへデータソースを設定

今回は、WildFlyへデータソースを設定します。データソースを設定すると、アプリケーションからデータベースへ接続することができるようになります。

データソースの設定は、

1 WILDFLY_HOME\standalone\configuration\standalone.xmlに設定
2 アプリケーション(warファイル)のWEB-INF/*-ds.xmlに設定

の2通りの方法があります。

・WildFlyをインストールしたフォルダをWILDFLY_HOMEと表記しています。
・*は任意の文字列を表しています。例えば、subsonic-airlines-members-ds.xmlなどファイル名の後ろに-ds.xmlが付いているとデータソース設定ファイルとして認識されます。

設定の使い分けについてですが、本番では1の方法、開発時など一時的な利用では2の方法が推奨されています。

今回は、1の方法について説明します。

開発環境
Windows 7 64ビット
Eclipse Luna 4.4.2 64ビット
JBoss Tools 4.2.3.Final
WildFly 8.2.0.Final
MySQL Connector/J 5.1.36
MySQL Community Server 5.6.26 64ビット

事前準備
JBoss Toolsをインストールします。

WildFlyにJDBCドライバを設定します。

MySQLをローカル開発環境へインストールします。

推奨インストール
MySQL Workbenchをインストールしておくと便利です。

データベースの設定
データベース関連の設定を行います。今回は、MySQLを使用します。

1 スキーマの作成
スキーマを作成します。今回は、スキーマ名をsubsonic_airlines_membersとしています。

2 データベースユーザの設定
データベースユーザ、パスワード、権限の設定をします。今回は、ユーザ名をadmin、パスワードをadminとしています。また、ユーザadmin
にsubsonic_airlines_membersスキーマに対してすべての権限を与えます。

データソースの設定
WILDFLY_HOME\standalone\configuration\standalone.xmlを直接編集することも可能ですが、今回もマネージメントCLIを使って設定します。

1 WildFlyの起動
EclipseからWildFlyを起動します。

2 マネージメントCLIの起動
WILDFLY_HOME\bin\jboss-cli.batをダブルクリックして、マネージメントCLIを起動します。
wildfly-datasource1

3 接続
connectと入力してエンターキーを押します。
wildfly-datasource2

4 データソースの設定
次の通り入力してエンターキーを押します。
実際に入力するときは、1行で入力してください。

data-source add 
--name=subsonic-airlines-membersDS 
--jndi-name=java:jboss/datasources/subsonic-airlines-membersDS 
--driver-name=mysql 
--connection-url=jdbc:mysql://localhost:3306/subsonic_airlines_members 
--user-name=admin 
--password=admin 
--valid-connection-checker-class-name=
org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker 
--background-validation=true 
--background-validation-millis=60000 
--exception-sorter-class-name=
org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter

wildfly-datasource3

引数については、次の通りです。

引数 説明
name 名称です。[必須]
jndi-name JNDI名です。アプリケーション側で呼び出しの際に使用します。[必須]
driver-name JDBCドライバ名です。[必須]
connection-url JDBCドライバのコネクションURLです。[必須]
user-name データベース接続時のユーザ名です。
password データベース接続時のパスワードです。
valid-connection-checker-class-name データベース接続を検証するクラスを指定します。
background-validation データベース接続をバックグラウンドで検証するかどうかを指定します。
background-validation-millis データベース接続をバックグラウンドで検証する頻度をミリ秒で指定します。
exception-sorter-class-name 例外が発生した場合、データベース接続エラーかどうかを検証するクラスを指定します。
initial-pool-size プールに保持するデータベース接続数の初期値を指定します。
min-pool-size プールに保持するデータベース接続数の最小値を指定します。
max-pool-size プールに保持するデータベース接続数の最大値を指定します。

今回は、コネクションプーリング関連の引数を与えていませんが、本番サーバの設定では、コネクションプーリングの設定も行うと思います。

コネクションプーリングとは、あらかじめコンテナがデータベースに接続しておいて、必要に応じてコネクションをアプリケーションに渡す仕組みです。

データベースの接続処理は処理コストが高いため、アプリケーションがデータベース処理を行う度にデータベースの接続処理を実行すると、アプリケーションのパフォーマンスが悪くなってしまいます。

そのため、あらかじめコンテナがデータベースに接続し、そのデータベース接続をプールに保持しておきます。そして、アプリケーション側でデータベース接続が必要になったときにプールからデータベース接続を取り出して、アプリケーションへ渡します。

設定が成功すると、WILDFLY_HOME\standalone\configuration\standalone.xmlに次の要素が追加されます。

<datasource jndi-name="java:jboss/datasources/subsonic-airlines-membersDS" pool-name="subsonic-airlines-membersDS" enabled="true">
    <connection-url>jdbc:mysql://localhost:3306/subsonic_airlines_members</connection-url>
    <driver>mysql</driver>
    <security>
        <user-name>admin</user-name>
        <password>admin</password>
    </security>
    <validation>
        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
        <background-validation>true</background-validation>
        <background-validation-millis>60000</background-validation-millis>
        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
    </validation>
</datasource>