Java EE 7 検証環境 WildFlyにDataSourceを手動で作成
「Java EE 7 検証環境構築(1) WildFly + JBoss Tools で EARプロジェクトを作成し Arquillian で ユニットテストをグリーンにするところまで」 から「Java EE 7 検証環境構築(16) WildFly と Apache を mod_jk で連携させる(Widows)」までで、環境構築、アプリケーション、ユニットテスト、Webサーバーとの連携、と、大枠のやりたい範囲を動くようにすることはできたと思う。
ここからは、気になった点などを適宜まとめていこう。
ということで、
Java EE 7 検証環境構築(2) WildFly に DataSourceを作成
していたのだが、WildFly 8 Administration を見ると、DataSourceの作成には、以下の3通りの方法がある
- 手動でのデータソース設定
- CLIを利用したデータソース設定
- デプロイリソース(アプリケーション同梱)としてのデータソース設定
ようだ。
実は、Java EE 7 検証環境構築(2) WildFly に DataSourceを作成 行った方法がまずいのかどうなのかわからないが、Eclipseでテストなどしていると、デプロイしたJDBC ドライバーがWildFlyから消えてしまう事象が頻繁に発生する(何らかのきっかけでテストアプリケーション扱いされて消えてしまう?)。
まぁ、deploy コマンドをながすだけ、再度デプロイできるのだが、やはり気持ち悪いので別の方法を検討してみる。
1. 手動でのデータソース設定
一番素早く設定できる方法ではないが、仕組みを理解するにはよいようだ。
サーバーの設定ファイルに、以下のステップを踏む。
- JDBCモジュールの作成
- データソースとドライバの定義
1.1 JDBCモジュールの作成
アプリケーションサーバーのモジュールは、modules ディレクトリにインストールされる。
1.1.1 パスの構造を、JBOSS_HOME\modules ディレクトリのファイルに作成しJDBCドライバを配置
MySQLを例にすると
JBOSS_HOME/modules/com/mysql/main
ディレクトリを作成し、JDBCドライバをコピー
1.1.2 module.xml ファイルを作成する
JDBCドライバを配置したディレクトリに、以下のような内容のmodule.xml ファイルを作成する。
<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.3" name="com.mysql"> <resources> <resource-root path="mysql-connector-java-5.1.30-bin.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
1.1.3 アプリケーションサーバー設定ファイルを編集する
standalone モードの場合、standalone.xml を編集する。
<subsystem xmlns="urn:jboss:domain:datasources:2.0"> <datasources> <datasource jndi-name="java:jboss/datasources/gnomeDS" pool-name="gnomeDS" enabled="true"> <connection-url>jdbc:mysql://localhost:3306/gnome</connection-url> <driver>mysql</driver> <security> <user-name>root</user-name> <password>*****</password> </security> </datasource> <drivers> <driver name="mysql" module="com.mysql" /> </drivers> </datasources> </subsystem>
1.1.4 接続確認
WildFly を再起動。
管理コンソールで、追加したデータソースが表示されているのを確認できる。
おお! テスト接続成功!
不惑をすぎても、この瞬間がうれしい。
この感覚がないと、この仕事はやってられないだろうなーなんて。
あとは、しばらく問題が発生しないか試してみよう。