|
カテゴリ:仕事
Tomcat5.5.23で、アプリケーション/META-INF/context.xml に書いた
path属性が無視されてしまい、どうしてもコンテキストパスが warファイル名(アプリケーションのディレクトリ名)になってしまう、という現象について。 結論から言うと、warファイル一発デプロイでコンテキストパスを指定するのは不可能です。 Tomcat5.5.23ではアプリケーション/META-INF/context.xml に path属性を書いても無視されます。これは仕様です。 さらに、$CATALINA_HOME/conf/[enginename]/[hostname]/に置いた {アプリ名}.xmlにpath属性を書いても無視されます。 これも仕様です。 Tomcat5.0では、これらのコンテキスト設定ファイルにpath属性を 書くと、warファイル名(アプリケーションのディレクトリ名)と path属性に書いた値の両方がコンテキストパスとして登録されました。 ※これはこれで、JNDIリソースのルックアップ等で問題があったのですが。 Tomcat5.5.3からは、path属性の値はserver.xmlに<Context>要素を 直接書いた場合にのみ有効になるように変更になったようです。 (下記change log参照) http://tomcat.apache.org/tomcat-5.5-doc/changelog.html#Tomcat%205.5.3%20(yoavs) 「When parsing a context file, ignore the "path" attribute: the only place where it is acceptable is in server.xml. (remm)」 とあります。 で、server.xmlをいじらずにwarファイル名やディレクトリ名とは 違ったコンテキストパスをつけたい場合にはどうするかというと、 $CATALINA_HOME/conf/[enginename]/[hostname]/に [コンテキストパス].xml という名前でファイルを作成すると、 このファイル名からコンテキストパスが導き出されるようです。 コンテキストパスに"/"(スラッシュ)を含めたい場合は#で置換します。 (例)/foo/barというコンテキストパスをつけたい場合はfoo#bar.xml さらに、アプリケーションのリソースはappBase(デフォルトでは$CATALINA_HOME/webapps) に置いてはダメで、他の任意の場所に配置し、コンテキスト設定ファイルには docBase属性を書いてきちんと絶対パスで指定する必要があります。 この辺は下記のデプロイに関するドキュメントを見てもわからず、 http://tomcat.apache.org/tomcat-5.5-doc/deployer-howto.html#A%20word%20on%20Contexts こちらのcontext.xmlに関するドキュメントを見ると少し書いてあります。 http://tomcat.apache.org/tomcat-5.5-doc/config/context.html やはりユーザには混乱を招いているようで、 Apacheのbugzillaにもこんなのがありました。 http://issues.apache.org/bugzilla/show_bug.cgi?id=32222 まぁ、コンテキストパスはコンテナが決めることで アプリが決めることではないってことなのでしょう・・・ ちなみに、この仕様はTomcat6にも引き継がれています。 ※あっちが開店休業状態なのでやっぱりこっちに書きました・・・ こういうのって自分のメモ代わりとしても有効なんですよね。。。 お気に入りの記事を「いいね!」で応援しよう
Last updated
August 26, 2007 07:24:37 PM
[仕事] カテゴリの最新記事
|