目的
tWAS 9.0と、Db2 で環境を構築してDataSourceをテストします。
Gitレポジトリ
用意したGitレポジトリをクローンします。
git clone https://github.com/pdprof/db-connections
cd db-connections/derby-docker/
Db2イメージのビルド
Libertyと、Db2, MySQL, Derbyのイメージをビルドします。localhost 以外の docker を動かしているホストのIPアドレスをACCESS_HOSTに指定します。今回はDb2を使用します。
export ACCESS_HOST=172.17.0.1
# export ACCESS_HOST=`hostname` # hostnameコマンドで返す値でアクセスできる場合
# export ACCESS_HOST=host.containers.internal # liberty から dbサーバーへの接続を podmanのホスト経由でする場合
./setup-docker.sh
tWAS9.0イメージのビルド
tWAS 9.0 イメージをビルドします。
./setup-was90.sh
Db2の起動
今回はDb2を起動します。(setup-docker.sh 後で停止していない場合は起動済みです)
docker ps # 起動状況の確認
./db2-start.sh
# ./mysql-start.sh # mysqlを起動する場合
Db2にアクセスするtWAS9.0の起動
Db2にアクセスするtWAS9.0を起動します。mysqlやDerbyへアクセスするイメージの用意はありませんが、構成をまねてみてください。
./was90-start.sh
アプリケーションにアクセスして動作確認
http://localhost:9080/db.connections/
にアクセスすると以下画面が確認できます。localhost部分は環境にあわせて変更します。
Simple db access test をクリックすると TABLEの作成とデータ挿入が実行されます。JPA Action Test 以下のボタンでJPAのテストができます。実行される内容は代わり映えしませんが、出力はJSONにしました。
トラブルシューティング
毎度のことですが、よくつかう dockerコマンドを書いておきます
接続がうまくいかない場合は、/config/server.xml で指定したホスト名(IPアドレス)が問題ないか、DBが動作しているか確認します。DBは
docker ps # 動作中のContainer確認
docker logs -f mydb2 # ログ確認
docker restart mydb2 # 再起動
docker inspect mydb2 # container 確認
docker exec -it mydb2 bash # Container内状況確認
など試してみましょう。mydb2の部分を docker ps で確認した container の別IDにすることでtWAS9.0側も確認できます。
まとめ
tWAS9.0, Db2の環境を構築をしてテストをすることができました。