• ベストアンサー

Tomcat 4.1での配備方法

Tomcat 4.0で動作していたアプリがTomcat 4.1だと動作しません。配備方法が変わったんでしょうか? 導入時のサンプル/examplesのサーブレット/JSPは動きますが、そのContext要素の上に記述したContextのdocBaseで指定したパスのWEB-INF/classes/*.classがブラウザから呼び出せないのです(localhost:8080/.../servlet/*)。ちなみに、ドキュメントルート直下にindex.htmlをおいたところ、問題なく参照できました(localhost:8080/.../index.html)。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Harry_
  • ベストアンサー率55% (36/65)
回答No.1

Tomcat 4.1.12 ですか。 セキュリティ上の理由で、 デフォルトでは /servlet/* という URL によるサーブレットの実行が できなくなっています。 %TOMCAT_HOME%/conf/web.xml の ( 多分 ) 272 行目から始まる、 invoker という名前のサーブレットのマッピングがコメントアウトされてますので、 それを有効にして Tomcat を再起動すればよいです。 もしくはコンテキストごとに準備する web.xml のなかに、 examples/WEB-INF/web.xml の 146 行目のようにマッピングを追加するのが、 よりよいのではないかと思います。 ただし、デフォルトでコメントアウトされているのには それなりの理由があるのだということは忘れないでください。

noname#4486
質問者

お礼

完璧なご回答ありがとうございます! Jakartaが公開している文書だと、どこに記載されておりますでしょうか?Jakarta仕様じゃなくて、Sun仕様なんでしょうか? サードベンダー提供の文書は発見しました。この件ですよね? http://www.moreservlets.com/Using-Tomcat-4.html#Enable-Invoker 追加質問となり、まことにお恥ずかしいのですが、お時間のあるときにご教示ください。 よろしくお願いします。

その他の回答 (1)

  • Harry_
  • ベストアンサー率55% (36/65)
回答No.2

Jakarta のドキュメントは、よく知りませんが、とりあえず、 http://jakarta.apache.org/site/news.html の 10月9日の Tomcat 4.0.6 がリリースされたニュースの ところに、コメントアウトされることになった簡単な経緯が載ってます。 変更されたのは、Tomcat 4.1 から、というわけではなく、 4.0.x、4.1.x ともにバグがあり、 それぞれ、4.0.6、4.1.12 から修正されています。 このセキュリティホールは Sun のサーブレット仕様とは関係ありません。 Tomcat 固有のバグです。

noname#4486
質問者

お礼

ありがとうございます。 JakartaのNEWS確認いたしました。 Tomcat 4.1.12ではおっしゃるとおり、web.xmlの273-278のコメントアウトを削除することで、/servlet/*を実行することができましたが、Tomcat 4.0.6ではそのような作業を必要としないようです。4.0.6ではserver.xmlへのドキュメント・ルートの追加以外の追加作業は不要でした。 4.1のmanager, adminの使い方等、?な点がありますので、追って勉強の必要がありそうです。 ご回答、ありがとうございました。

関連するQ&A