Java Tomcat9データソース経由でOracleへ接続する




Webアプリケーションサーバーを利用している場合、データベースとの接続はデータソース経由で実施するのがふつうです。
データソースを利用すると、処理が終わってもデータベースとの接続を保持(コネクション・プーリング)してくれるので、2回目以降のアクセスでは、接続された状態からスタートできるため、処理性能が向上します(^^♪

Tomcat9データソース経由でOracleへ接続するサンプル

今回は、「testweb」アプリケーション内にDataSourceServletを作成します。
ブラウザでは、「http://localhost:8080/testweb/datasource」でアクセスします。

設定

testweb.xml(ファイル名はWebアプリケーション名)

Tomcatの場合、xmlにデータベースの接続情報を記述します。
※WebSphere等の商用アプリケーションサーバを利用している場合、付属の管理ツールで設定します。
配置先:<CATALINA_HOME>/conf/Catalina/localhost/testweb.xml

web.xml

こちらは、データソースに関する記述はとくに必要ありません。
普段どおり、サーブレット名、URL等を書いておきます。
配置先:<CATALINA_HOME>/webapps/testweb/WEB-INF/web.xml

※CATALINA_HOME = Tomcatを配置したルートディレクトリ

ソース

Tomcatで設定した情報をもとにデータソース経由でOracleコネクションを取得。
DUAL表より取得した値をブラウザに返します。

実行結果

DUAL表の値「X」が、こんな感じで返ってきますw

サンプルの解説

データベースの接続は、DataSource#getConnection()にて、データソースから接続を取得します。
データソースから接続を取得する場合、”java:comp/env/” + 設定名で接続を取得します。
サンプルの場合、Tomcatには「jdbc/oraora」で定義したので、プログラムでは「java:comp/env/jdbc/oraora」を指定します。

以降の処理は、ドライバ経由で接続した処理と同じです。
処理が終わった際は、これも同じくConnection#close()で、接続を終了します。
プログラム上は、「接続閉じてね」って言ってますが、実はこのとき、コネクションプールに接続を返すだけで、接続は閉じていません。
Tomcat(データソース)側では、このデータベースとの接続を閉じることなく、次回データベースの接続を要求されたときのために、コネクションプールに接続したまま保管しておいてくれます。

Oracleにドライバ経由で接続する方法は?

Oracleにドライバ経由で接続する方法は、こちらを見てください。

Java Oracleデータベースに接続して、SQLを発行する

2018.02.01