質問

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 まったく。バグレポートで述べたように、あなたは使用する必要があります このアプローチ 代わりは。

他のヒント

別の、よりシンプルな答えが提供します ケーシー 同じ質問に Balusc へのリンクは、ウェルカムファイルリストを指定し、最後のウェルカムファイルをアプリケーションサーブレットのURLパターンにマップすることです。この構成では、デフォルトのサーブレットは静的コンテンツを処理し、比類のないURLがアプリケーションに分類されます。

Caseyからのコードを含む完全な答え

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top