2 tomcatによるwebアプリケーションサーバ構築 第4章...

23
Webアプリケーションからデータベースにアクセスするために、Tomcat上に利用するデータベースに応じたデータソース を設定します。 データソースを設定したら、Webアプリケーションから適切なデータソースが利用できるように、コンテキスト情報とし てリソースリンクが必要です。 コンテキスト情報は、コンテキスト記述子としてXMLファイルに< context >タグで記述さ れています。

Upload: enpel

Post on 30-Jun-2015

542 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

Webアプリケーションからデータベースにアクセスするために、Tomcat上に利用するデータベースに応じたデータソースを設定します。データソースを設定したら、Webアプリケーションから適切なデータソースが利用できるように、コンテキスト情報としてリソースリンクが必要です。 コンテキスト情報は、コンテキスト記述子としてXMLファイルに< context >タグで記述されています。

Page 2: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

データソースを利用するには、あらかじめサーバー側でJNDIにデータソースの登録をしておきます。Webアプリケーションからは登録されているデータソース名を、JNDIに対して検索(ルックアップ)します。参照されたデータソースからConnectionオブジェクトがプールから取り出され、Webアプリケーションから利用できるようになります。

Page 3: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

Tomcat側でデータソースを登録する際には、使用するデータベース毎に対応するドライバ名やurlなどを設定しながらデータソースに名前をつけ、JNDIに登録しておきます。 この名前のことをグローバル名といいます。データソース定義は、サーバー全体に設定することもできますが、Webアプリケーション毎に設定することもできます。

Page 4: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

Webアプリケーションのプログラムがデータソースを利用してデータベースにアクセスする場合は、 JNDIに登録されているデータソースのグローバル名を指定して検索することもできますが、データベースが変更された場合を考慮し、 java:comp/env/という接頭子をつけたローカル名でJNDIから検索します。

Page 5: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

検索を行うJavaコードでローカル名(ローカル名であることを示すために、java:comp/envがつく)を指定するのはもちろんですが、Webアプリケーションのweb.xmlファイルでも定義されています。

Page 6: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

プログラムから指定するローカル名とデータソースで指定するグローバル名のマッピングを行うのがリソースリンクであり、 各アプリケーションごとにコンテキスト記述子としてXMLファイルに登録しておきます。コンテキスト記述子はサーバー全体、ホスト単位、アプリケーション単位で記述することができ、図のような順で評価されます。

Page 7: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

開発環境において、Webアプリケーション内のJavaコードからはローカル名でデータソースを利用し、Web.xmlファイルにデータソースの設定をローカル名で行います。META-INF\context.xmlでリソースリンクを設定し、テスト用データベースのローカル名とグローバル名のマッピングを行い、データベースとの接続テストを行います。

Page 8: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

本番環境にWebアプリケーションをデプロイすると、META-INF\context.xmlは%CATALINA_HOME%\conf\エンジン名\ホスト名\Webアプリケーション名.xmlファイルにコピーされ、コンテキスト情報を提供します。本番環境用のデータベースのデータソースは、サーバー管理者が設定を行います。それに合わせて管理者がコンテキスト情報のリソースリンクを変更することにより、 プログラムで指定しているローカル名とデータソースのグローバル名との柔軟な対応を取ることができます。

Page 9: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

Webアプリケーション側でコンテキスト情報を設定せず、サーバー側のデフォルトのコンテキストを使用することも可能です。開発環境では、Tomcatにテスト用データベースに対するデータソースの設定を行い、プログラムのローカル名とデータソース上のグローバル名のマッピングを行うリソースリンクを、デフォルトのコンテキスト情報として %CATALINA_HOME%\conf\context.xmlに作成し、テストを行います。

Page 10: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

本番環境では、Tomcatに本番用データベースに対するデータソースの設定を行い、 プログラムのローカル名とデータソース上のグローバル名のマッピングを行うリソースリンクを、 デフォルトのコンテキスト情報として %CATALINA_HOME%\conf\context.xmlに作成します。

Page 11: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

Webアプリケーションは、データベースにアクセスするための記述および設定をする必要があります。 ①Javaプログラムでは、WEB-INF\web.xmlで定義されたものと同じリソース参照名を使うことに注意。 ②あらかじめ設定されているデータソースのJNDI名(ローカル名)を定義するために、 WebアプリケーションのWEB-INF\web.xmlにリソース参照としてデータソースの定義を追加。

Page 12: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

アプリケーションサーバー側でも、データソースを利用できるように設定しなければなりません。

Page 13: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

①JDBCドライバのインストール :JDBCデータソースを使うには、利用するデータベース用のJDBCドライバをTomcat 内部クラスとWebアプリケーションの両方で 利用可能にする必要があります。そのためには、データベースに対応したJDBCドライバを %CATALINA_HOME%\lib\にコピーします。 ここでは、あらかじめダウンロードしておいたPostgreSQL用のJDBCドライバを使用します。

Page 14: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース
Page 15: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース
Page 16: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース
Page 17: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース
Page 18: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース
Page 19: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース
Page 20: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース
Page 21: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

③Webアプリケーションのデプロイ :マネージャ・ツールなどを使ってWebアプリケーションをデプロイし、web.xmlに定義されているデータソースのローカル名やタイプがデータソースであるかを確認します。

Page 22: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース
Page 23: 2 TomcatによるWebアプリケーションサーバ構築 第4章 Tomcatの構成(3)-データソース

④リソースリンクの確認 :生成されたコンテキスト情報を確認します。%CATALINA_HOME%\conf\エンジン名\ホスト名\Webアプリケーション名.xmlファイルの内容を確認し、データソースのローカル名とグローバル名のマッピングが正しいか確認し、正しくなければグローバル名の修正を行います。