2 tomcatによるwebアプリケーションサーバ構築 第4章...
TRANSCRIPT
Webアプリケーションからデータベースにアクセスするために、Tomcat上に利用するデータベースに応じたデータソースを設定します。データソースを設定したら、Webアプリケーションから適切なデータソースが利用できるように、コンテキスト情報としてリソースリンクが必要です。 コンテキスト情報は、コンテキスト記述子としてXMLファイルに< context >タグで記述されています。
データソースを利用するには、あらかじめサーバー側でJNDIにデータソースの登録をしておきます。Webアプリケーションからは登録されているデータソース名を、JNDIに対して検索(ルックアップ)します。参照されたデータソースからConnectionオブジェクトがプールから取り出され、Webアプリケーションから利用できるようになります。
Tomcat側でデータソースを登録する際には、使用するデータベース毎に対応するドライバ名やurlなどを設定しながらデータソースに名前をつけ、JNDIに登録しておきます。 この名前のことをグローバル名といいます。データソース定義は、サーバー全体に設定することもできますが、Webアプリケーション毎に設定することもできます。
Webアプリケーションのプログラムがデータソースを利用してデータベースにアクセスする場合は、 JNDIに登録されているデータソースのグローバル名を指定して検索することもできますが、データベースが変更された場合を考慮し、 java:comp/env/という接頭子をつけたローカル名でJNDIから検索します。
検索を行うJavaコードでローカル名(ローカル名であることを示すために、java:comp/envがつく)を指定するのはもちろんですが、Webアプリケーションのweb.xmlファイルでも定義されています。
プログラムから指定するローカル名とデータソースで指定するグローバル名のマッピングを行うのがリソースリンクであり、 各アプリケーションごとにコンテキスト記述子としてXMLファイルに登録しておきます。コンテキスト記述子はサーバー全体、ホスト単位、アプリケーション単位で記述することができ、図のような順で評価されます。
開発環境において、Webアプリケーション内のJavaコードからはローカル名でデータソースを利用し、Web.xmlファイルにデータソースの設定をローカル名で行います。META-INF\context.xmlでリソースリンクを設定し、テスト用データベースのローカル名とグローバル名のマッピングを行い、データベースとの接続テストを行います。
本番環境にWebアプリケーションをデプロイすると、META-INF\context.xmlは%CATALINA_HOME%\conf\エンジン名\ホスト名\Webアプリケーション名.xmlファイルにコピーされ、コンテキスト情報を提供します。本番環境用のデータベースのデータソースは、サーバー管理者が設定を行います。それに合わせて管理者がコンテキスト情報のリソースリンクを変更することにより、 プログラムで指定しているローカル名とデータソースのグローバル名との柔軟な対応を取ることができます。
Webアプリケーション側でコンテキスト情報を設定せず、サーバー側のデフォルトのコンテキストを使用することも可能です。開発環境では、Tomcatにテスト用データベースに対するデータソースの設定を行い、プログラムのローカル名とデータソース上のグローバル名のマッピングを行うリソースリンクを、デフォルトのコンテキスト情報として %CATALINA_HOME%\conf\context.xmlに作成し、テストを行います。
本番環境では、Tomcatに本番用データベースに対するデータソースの設定を行い、 プログラムのローカル名とデータソース上のグローバル名のマッピングを行うリソースリンクを、 デフォルトのコンテキスト情報として %CATALINA_HOME%\conf\context.xmlに作成します。
Webアプリケーションは、データベースにアクセスするための記述および設定をする必要があります。 ①Javaプログラムでは、WEB-INF\web.xmlで定義されたものと同じリソース参照名を使うことに注意。 ②あらかじめ設定されているデータソースのJNDI名(ローカル名)を定義するために、 WebアプリケーションのWEB-INF\web.xmlにリソース参照としてデータソースの定義を追加。
アプリケーションサーバー側でも、データソースを利用できるように設定しなければなりません。
①JDBCドライバのインストール :JDBCデータソースを使うには、利用するデータベース用のJDBCドライバをTomcat 内部クラスとWebアプリケーションの両方で 利用可能にする必要があります。そのためには、データベースに対応したJDBCドライバを %CATALINA_HOME%\lib\にコピーします。 ここでは、あらかじめダウンロードしておいたPostgreSQL用のJDBCドライバを使用します。
③Webアプリケーションのデプロイ :マネージャ・ツールなどを使ってWebアプリケーションをデプロイし、web.xmlに定義されているデータソースのローカル名やタイプがデータソースであるかを確認します。
④リソースリンクの確認 :生成されたコンテキスト情報を確認します。%CATALINA_HOME%\conf\エンジン名\ホスト名\Webアプリケーション名.xmlファイルの内容を確認し、データソースのローカル名とグローバル名のマッピングが正しいか確認し、正しくなければグローバル名の修正を行います。