Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多url模式的部署问题?_Java_Servlets_Tomcat6_Websphere 8 - Fatal编程技术网

Java 多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> <

我有一个应用程序部署在tomcat上,servlet版本为2.4,运行良好

当我尝试在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>

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。