最近、Tomcatサーバーを6.xバージョンから最新の7.xバージョンにアップグレードしました。
少しでも困りました。助けてもらいたいです。
MyAppを呼び出すアプリケーションがあります
Tomcat6で、 http://www.example.com/MyApp/page/ にアクセスすると、通常、必要な結果が得られます。
これで、Tomcat7で、同じ正確なURLにアクセスします(末尾のスラッシュ付き)。「リソースは使用できません」というエラーが発生します。Tomcatは/ MyApp/page /がリクエスト名ではなくWebアプリケーション名全体であると見なしているためですMyApp webappの下のページ。
「HTTPステータス405-リクエストメソッド 'GET'はサポートされていません」というエラーが発生するため、URLの最後にスラッシュが必要です。これは、「ページ」リクエストへのGETメソッドを実際に許可しなかったため、問題ありません。 。
誰かがTomcatに、既存のwebappのパスの後にあるスラッシュを新しいwebappにリダイレクトして「文字列」全体を呼び出し、Tomcat6のようにリクエストを処理するべきではないことを伝える方法を知っている場合、それは素晴らしいことです!
古代の質問ですが、私は最近、Tomcat 8で終了スラッシュと戦ったので、スラッシュの問題がTomcatユーザーの世界を悩ませ続けていることを知っています。 :-)
実行中の可能性があるのは、ルートコンテキストのロード時にTomcatがリダイレクトを処理する方法の変更です。 バグ5866 をチェックして、そこで開発者の議論を読んでください。 conf/context.xml
のmapperContextRootRedirectEnabled
要素のContext
属性を変更して、デフォルトのマッパーをオフにする必要がある場合があります。
プロジェクトがv2.2の動的Webモジュールを使用している場合は、WebContentのweb.xml(eg:index.html)に存在する少なくとも1つのファイル(空のhtmlファイルでもかまいません)を明示的に作成する必要があります。
Welcome-file-listを確認してください。以下は推測です...
問題の本質は、Tomcatに/が表示されたときであると思います--いくつかのオプションがあります-ウェルカムファイルリストを反復します-何もない場合-ディレクトリリストを表示します(有効な場合)
ここからがおもしろいところです...多くの人がStrutsのようなものに* .doを使いたいと思っています。したがって、index.doをホームページにしたいと考えています。または、*。jspがJspServletにマップされているindex.jspも一般的です。
楽しみがここにあります。ウェルカムファイルがindex.jsp、index.doであるとしましょう。
Tomcat(IIRC)が行っていることは、最初にウェルカムファイルリストを反復処理して、その名前のリソースを探します。
次に、一致するマッピングを探す2番目のパスを実行します。したがって、ウェルカムリストでindex.jspが指定され、*。jspがマップされている場合。その後、Tomcatはindex.jspに転送しようとし、404を取得します。
サーブレットマッピングとウェルカムファイルが重複していると思います。また、そのサーブレットの動作はGETをサポートしていません。 (したがって、405)