静的コンテンツ。 Tomcat6とTomcat7の動作の違い
質問
1000回尋ねられたことを尋ねていてすみませんが、私はそれを検索して何も見つかりませんでした:)
Tomcatインスタレーションが2つあります。 WindowsのTomcat 6およびLinuxマシンのTomcat 7。私は春を使用し、リクエストを春を通過することなくサービスを提供したい静的なコンテンツをいくつか持っているプロジェクトを持っています。
これが私のサーブレットの構成です:
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
私の静的ファイルは、Web-INFフォルダーの横にある「静的」フォルダーにあります。
今、面白いことは、私がリクエストをするときのtomcat7で http://myserver.com/myproject/static/css/main.css /webapps/myproject/static/css/main.cssでファイルを探しますが、tomcat6では/webapps/myproject/css/main.cssでそれを探し、そのようなファイルがないというエラーを生成します。
両方のサーバーが同じように動作するには、どのような構成を微調整する必要がありますか?
解決
実際には、Tomcatのデフォルトサーブレットを乱用しています。デフォルトのサーブレットは、サーブレットAPIによって定義されておらず、サーブレットコンテナに固有のものではありません。 Tomcatのデフォルトサーブレットは、のすべての内容を公開できるバグがあることが知られています /WEB-INF
と /META-INF
このように虐待したとき、これにより機密情報にドアを開いてください。これはとして報告されています 第50026号 Tomcat 6.0.30以降で固定されています。
ソリューションは簡単です:あなたのデフォルトサーブレットを明示的にマッピングしてはいけません web.xml
まったく。バグレポートで述べたように、あなたは使用する必要があります このアプローチ 代わりは。