ひこぽんのーと

覚書と雑記です。

JavaEE 7をやってみよう。 JPA その2

その1のつづき。

まず、プロジェクトを作る前に、JPA用にデータソースの設定をWildflyに仕込む。
プロジェクトを作って、JPA用のモジュールを作る分には必要ではないが、
後々の動確用に予め仕込んでおく。

1. Wildfly立ち上げ
EclipseのサーバからWildflyを立ち上げる。
localhost:8080へ繋いで、トップを出す。
f:id:nagamitsu1976:20150930161452p:plain
2. Admin Consoleを起動
トップページの中程にAdmin Consoleのリンクがあるので、そこから管理画面へ入る。
f:id:nagamitsu1976:20150930162303p:plain
2'. 管理画面が開けなかったアナタに
初めて管理画面を開いたり、管理ユーザが一人もいない場合、管理画面は開けない。
表示された手順を元にWildflyの管理ユーザを作る。
手順は英語だが、コマンドラインのハードコピーが表示されているのでわかりやすいと思う。
管理ユーザを追加したら、
もう一度、トップページから管理画面へ入り直すとログインダイアログが表示される。f:id:nagamitsu1976:20150930161740p:plain
3. JDBCドライバの登録
Wildflyではデータソースで使用するJDBCドライバも"デプロイメントモジュール"として登録する。
画面上部の"Deployments"からデプロイ画面を開く。
f:id:nagamitsu1976:20150930162633p:plain
3-1. Jarファイルの選択、名称の決定
"Add"ボタンを押してダイアログを表示する。JDBCドライバファイルを選択し、"Next"ボタンを押下する。
f:id:nagamitsu1976:20150930163136p:plain
登録後、即、有効化したいので、Enableのチェックを忘れずに付けて、"save"ボタンを押す。
f:id:nagamitsu1976:20150930163222p:plain
問題が無ければ、"Deployments"のリストに追加される。
4. データソースの追加
画面上部の"configuration"からコンフィグ画面を出す。
サイドメニューの"Containers" → "DataSources" とたどると、
JDBCデータソースの管理画面が開ける。
f:id:nagamitsu1976:20150930163642p:plain
4-1. データソース名とJNDI名称を決める
接続情報の登録:"Add"ボタンを押してダイアログを表示する。Wildfly上の名前(Name)とJNDI名称(JNDI Name)を決める。当たり前だが、JNDI名称をプログラムで使う。
f:id:nagamitsu1976:20150930164648p:plain
4-2. JDBCドライバを選択
JDBCドライバを選択する。
先に登録したJarファイルがドライバとしてリストから選択できる。
ここではHSQLDBのドライバを使う。f:id:nagamitsu1976:20150930164831p:plain
4-3. 接続情報を追加
JDBCの接続URLを入力する。以前、データソース・エクスプローラで追加した接続設定と同じようにJDBCの接続URLを入力する。
ユーザ、パスワードなどは必要なら入力する。(OracleなどのDBを使った場合)HSQLDBでは特に必要ない。
"Done"を押して完了。
f:id:nagamitsu1976:20150930165242p:plain
4-4. データソースの有効化
登録が正しく行われると非活性状態で登録される。
f:id:nagamitsu1976:20150930165451p:plain
登録したデータソースを選択し、"Enable"ボタンを押す。
設定が正しければ有効化できる。
有効化できない場合は、接続URLが正しいか、
DBが立ち上がっているかなどを見直すと原因がわかるかもしれない。f:id:nagamitsu1976:20150930165735p:plain

ここまでで、データソースの登録は完了だが、
Wildflyを再起動した時、"Deployments"に登録したJDBCドライバが消えていることがある。
(JNDIデータソースは消えない)
原因がよくわからないのだが*1、その場合は、デプロイしたモジュールをすべてアンデプロイして、
再度、JDBCドライバ→Webアプリケーションの順でデプロイし直すと良い。

といったところで、次回へ続く。

*1:翌日、作業再開時によくある。Wildfly起動時にDBが立ち上がっておらず、JNDIデータソースが有効化エラーとなり……、とか、そんなところが原因かもしれない