Java 多url模式的部署问题?
我有一个应用程序部署在tomcat上,servlet版本为2.4,运行良好 当我尝试在websphere上部署相同的应用程序时,部署失败。我发现多个url模式导致了这个问题 示例代码:-Java 多url模式的部署问题?,java,servlets,tomcat6,websphere-8,Java,Servlets,Tomcat6,Websphere 8,我有一个应用程序部署在tomcat上,servlet版本为2.4,运行良好 当我尝试在websphere上部署相同的应用程序时,部署失败。我发现多个url模式导致了这个问题 示例代码:- <filter> <filter-name>ABCD</filter-name> <filter-class>com.x.y.filters.ABCD</filter-class> </filter> <
<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>
ABCD
com.x.y.filters.ABCD
ABCD
/A/*
/B/*
/C/*
*.jsp
所以我的问题是,为什么servlet版本2.4不能与websphere一起工作(注意:如果我使用3.0,它会工作)。据我所知,servlet版本特定于我们正在部署的内容
我正在使用WebSphere8,它支持3.0和更低版本的servlet
请帮助我更好地理解。对于每个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>
ABCD
/A/*
ABCD
/B/*
Servlet 2.4规范定义了:
<xsd:choice>
<xsd:element name="url-pattern"
type="j2ee:url-patternType"/>
<xsd:element name="servlet-name"
type="j2ee:servlet-nameType"/>
</xsd:choice>
Servlet2.5引入了对多次发生的支持,这就是为什么它在Servlet3.0中为您工作的原因
规格。问题是当
web.xml
说它是2.4版本的应用程序时,为什么过滤器映射的多次出现在其中起作用。IMHO这是特定于供应商的“增强”。它们不完全符合servlet规范契约。另一方面,由于您的web.xml无效,您也不能这样做。他们决定忽略指定的版本。WebSphere做它应该做的事-它拒绝无效的web.xml
您必须为每个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>
ABCD
/A/*
ABCD
/B/*
Servlet 2.4规范定义了:
<xsd:choice>
<xsd:element name="url-pattern"
type="j2ee:url-patternType"/>
<xsd:element name="servlet-name"
type="j2ee:servlet-nameType"/>
</xsd:choice>
Servlet2.5引入了对多次发生的支持,这就是为什么它在Servlet3.0中为您工作的原因
规格。问题是当
web.xml
说它是2.4版本的应用程序时,为什么过滤器映射的多次出现在其中起作用。IMHO这是特定于供应商的“增强”。它们不完全符合servlet规范契约。另一方面,由于您的web.xml无效,您也不能这样做。他们决定忽略指定的版本。WebSphere做了它应该做的-它拒绝您的无效web.xml
您得到的错误是什么?如果是这种情况,它也不应该与tomcat appserver一起工作。但它是有效的。是否与appserver有任何关系???@Madhuprathap您得到了哪个错误?您得到了哪个错误?如果是这种情况,它也不应该与tomcat appserver一起工作。但它是有效的。是否与appserver有任何关系???@Madhuprathap您得到的错误是什么?如果是这种情况,它也不应该与tomcat appserver一起工作。但它是有效的。是否与appserver有任何关系??哪个tomcat版本?它也可能取决于web.xml中的版本属性。web.xml的开始看起来如何?在tomcat中工作和不在Websphere中工作是一样的。webshpere版本8,Apache Tomcat版本6.0.29请参阅。Tomcat6支持servlets 2.5规范。问题是当web.xml说它是2.4版本时,为什么它支持多次出现过滤器映射。IMHO这是特定于供应商的“增强”。他们不完全符合合同规定。另一方面,您也不这样做(您的web.xml无效)。他们希望变得聪明,忽略指定的版本。WebSphere做了它应该做的事情—它拒绝无效的web.xml。如果是这样,它也不应该与tomcat appserver一起工作。但它是有效的。是否与appserver有任何关系??哪个tomcat版本?它也可能取决于web.xml中的版本属性。web.xml的开始看起来如何?在tomcat中工作和不在Websphere中工作是一样的。webshpere版本8,Apache Tomcat版本6.0.29请参阅。Tomcat6支持servlets 2.5规范。问题是当web.xml说它是2.4版本时,为什么它支持多次出现过滤器映射。IMHO这是特定于供应商的“增强”。他们不完全符合合同规定。另一方面,您也不这样做(您的web.xml无效)。他们希望变得聪明,忽略指定的版本。WebSphere做它应该做的事—它拒绝无效的web.xml。