Tomcatにて,データベースにアクセスするためのデータソースの定義等を行うファイル、それがcontext.xmlです。
contextとはつまりアプリケーションのことなので、context.xmlはアプリケーションの設定ファイルといった,感じでしょうか。
contextに関するページは以下を参照。
Apache Tomcat Configuration Reference (6.0.53) - The Context Container
http://www.oki.com/jp/oss/document/tomcat/tomcat-6.0.14/build/tomcat-docs/config/printer/context.html(日本語)
それで、このcontext.xmlの配置場所は5種類存在します。
1.%CATALINA_HOME/conf/server.xml
server.xmlはサーバーの設定を行うためのファイル。つまり、このファイルに書いた設定は全てのアプリケーションに適用されることになります。
※ただしコンテキストの定義はserver.xmlに記述しないことが推奨されています。
3.%CATALINA_HOME/conf/[エンジン名]/[ホスト名]/contet.xml
これはパス上のホスト内のすべてのアプリケーションに対して設定が適用されます。
4.%CATALINA_HOME/conf/[エンジン名]/[ホスト名]/[アプリケーション名].xml
パッと見て分かるとおり、[アプリケーション名]が示すアプリケーションのみが適用の対象になります。
5.%CATALINA_HOME/webapps/[アプリケーション名]/META-INF/context.xml
今までのフォルダ階層下ではなく、アプリケーションのルートにMETA-INFフォルダを作成し、その下にcontext.xmlを配置します。
アプリケーションフォルダ内にあるので当然、当該アプリケーションのみに適用されます。
さらに4と5の関係について調べてみました。
リンク先によれば
Only if a context file does not exist for the application in the $CATALINA_BASE/conf/[enginename]
/[hostname]/, in an individual file at /META-INF/context.xml inside the application files. If the web
application is packaged as a WAR then /META-INF/context.xml will be copied to $CATALINA_BASE/conf
/[enginename]/[hostname]/ and renamed to match the application's context path. Once this file exists,
it will not be replaced if a new WAR with a newer /META-INF/context.xml is placed in the host's appBase.
とのこと。
起動時に5にしか該当xmlファイルがなければそれを設定ファイルとして読み込みます。
その内容をそっくり4にコピーするようです。
そして次回以降は4の設定ファイルを利用するといった感じです。
実際にやってみると確認できました。
使用バージョン
tomcat6.0.29
他の配置場所の優先順位や関係性に関してはまだわかりませんが...でもアプリケーション全体に適用なんて使う機会もなさそうだしね←
はじめてのJSP&サーブレット Eclipse 3.7 Indigo+Tomcat 7対応版 (TECHNICAL MASTER 67)
- 作者: WINGSプロジェクト,東浩二,山田祥寛
- 出版社/メーカー: 秀和システム
- 発売日: 2012/03/23
- メディア: 単行本
- クリック: 13回
- この商品を含むブログ (2件) を見る
- 作者: Jason Brittain,Ian F. Darwin,村上雅章
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/11/21
- メディア: 大型本
- 購入: 8人 クリック: 74回
- この商品を含むブログ (32件) を見る