2012-03-23 15 views
1

Tomcat、WebLogic、WebSphereおよびJBossにアプリケーションをデプロイしたいと考えています。アプリケーションのweb.xmlには、デフォルトのサーブレットへのマッピングが含まれている必要があります。 (すなわち、WebLogicが「のFileServlet」である)異なるデプロイメント環境でのデフォルトのサーブレット・マッピング

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/js/calendar/flexcal.html</url-pattern> 
</servlet-mapping> 

しかし、それは変化し、他のプラットフォーム上:このサーブレットは、「デフォルト」という名前のTomcatの

は、そう私たちのマッピングは次のように表示されます。

利用可能なものに応じて変更される条件付きマッピングを定義する方法はありますか?どうすればこの問題に近づくべきでしょうか?

ありがとうございます!

答えて

5

方法はありません。

コンテナのデフォルトサーブレットに明示的にマッピングしないことをお勧めします。 Webappを特定のコンテナに強く結合するだけでなく、約1年前までに、Tomcatやクローン(JBoss、WebSphereなど)でこれを行う際に大きなセキュリティホールが発生しました。デフォルトのサーブレットが/とは異なるURLパターンでマップされている場合、攻撃者は/WEB-INF/META-INFにファイル(機密情報を含む可能性がある)を要求することができます。あなた自身が本当に報告したissue 50026も参照してください。

はむしろ代わりに/*のより具体的なURLパターンのフロントコントローラサーブレットをマッピングし、フロントコントローラのいずれかに転送したり、現在のリクエストURIに応じて、デフォルトのサーブレットに引き続き/*上のグローバルフィルタを作成し、マップします。具体的な例はHow to access static resources when mapping a global front controller servlet on /*も参照してください。

+0

多くのありがとう、完璧なアドバイス。 – James

+0

ようこそ。 – BalusC

関連する問題