質問

私はサーブレットバージョン2.4を搭載したTomcatに展開されているアプリケーションを持っています。

WebSphereで同じアプリケーションをデプロイしようとしたら、展開に失敗しました。私は問題を引き起こす複数のURLパターンがあることを見つけました。

例コード: -

<filter> 
      <filter-name>ABCD</filter-name> 
      <filter-class>com.x.y.filters.ABCD</filter-class> 
</filter> 
<filter-mapping> 
      <filter-name>ABCD</filter-name>
      <url-pattern>/A/*</url-pattern> 
      <url-pattern>/B/*</url-pattern> 
      <url-pattern>/C/*</url-pattern> 
      <url-pattern>*.jsp</url-pattern> 
</filter-mapping>
.

だから私の質問はなぜサーブレットバージョン2.4がWebSphereで機能していないのか(注:3.0が使用されている場合)ということです。私たちが展開しているものに固有の私の理解サーブレットバージョン。

3.0と低いサーブレットバージョンをサポートするWebSphere 8を使用しています。

私を理解するのを手伝ってください。

役に立ちましたか?

解決

各URLパターンの個別のフィルタマッピングが必要です。

<filter-mapping>
   <filter-name>ABCD</filter-name>
   <url-pattern>/A/*</url-pattern>
</filter-mapping>    

<filter-mapping>
   <filter-name>ABCD</filter-name>
   <url-pattern>/B/*</url-pattern>
</filter-mapping>    
.

サーブレット2.4仕様定義:

  <xsd:choice>
   <xsd:element name="url-pattern"
         type="j2ee:url-patternType"/>
   <xsd:element name="servlet-name"
         type="j2ee:servlet-nameType"/>
  </xsd:choice>
.

サーブレット2.5は、サーブレット3.0で機能しているのは、複数の発生のサポートを導入しました。

tomcat 6は、サーブレット2.5 指定をサポートしています。問題は、web.xmlが2.4バージョンアプリケーションであると言っていると、フィルタマッピングの複数の発生が機能します。IMHOそれはベンダー具体的な「エンハンスメント」です。それらはFullFill Servlet仕様契約をしません。その一方で、web.xmlが無効なのでも同時にもそうではありません。それらは指定されたバージョンを無視することにしました。WebSphereはそれが必要なものをします - 無効なweb.xmlを拒否します。

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