複数のURLパターンを持つ展開の問題?
-
26-12-2019 - |
質問
私はサーブレットバージョン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
を拒否します。
所属していません StackOverflow