2013-02-11 60 views
0

我在使用Spring-Hibernate安裝程序從我的webapp提供靜態內容時出現了一個'奇怪'的問題。幾乎相同的webapps在提供靜態內容方面表現不同

我有一個使用DispatcherServlet的服務這樣的任何URL一個(小)的web應用:/封頁/ *默認.The servlet映射設置爲/靜態/ *

實施例:

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/static/*</url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/coverpage/*</url-pattern> 
</servlet-mapping> 

在我的JSP的靜態內容(圖片/ JS/CSS)是這樣寫的:

<spring:url value="/static/styles/js/jquery-1.4.2.min.js" /> 

我有4頁在webapp:的index.jsp和new.jsp,error.jsp文件和includes.jsp(這不是一種行爲ual頁面,duh)以及映射/ process,當輸入不正確的數據時返回PDF內容或驗證錯誤。

此設置似乎在我的webapp中正常工作。

現在的怪異的一部分: 我已經部署在另一個Tomcat實例相同的Web應用程序,並改變了端口,因此它們可以同時運行,現在靜態內容的引用只工作一半時間。只有/ new(aka new.jsp)的映射可以找到靜態內容。其餘的未能加載它。 2個實例之間

差異

  • Tomcat的版本(在6.0.29原始運行時,第二個實例在6.0.33中運行)

  • Tomcat的端口

  • 數據庫連接(原去PROD db,二次去TEST db - 兩個數據庫都是一樣的)

這裏是我的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

<display-name>Coverpage creator</display-name> 

<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/static/*</url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/coverpage/*</url-pattern> 
</servlet-mapping> 

<filter> 
    <filter-name>SetUTF8EncodingFilter</filter-name> 
    <filter-class>be.coverpagecreator.filter.SetUTF8EncodingFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>SetUTF8EncodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 


<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Coverpage creator</web-resource-name> 
     <url-pattern>/coverpage/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>cpcreator</role-name> 
    </auth-constraint> 
</security-constraint> 

<login-config> 
    <auth-method>BASIC</auth-method> 
    <realm-name>Coverpage creator</realm-name> 
</login-config> 

<security-role> 
    <description>The role that is required to create coverpages</description> 
    <role-name>cpcreator</role-name> 
</security-role> 

</web-app> 

與調度員,servlet配置

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

<import resource="application-context.xml"/> 

<mvc:annotation-driven /> 

<mvc:interceptors> 
    <bean name="openSessionInViewInterceptor" class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
     <property name="singleSession" value="false" /> 
    </bean> 
</mvc:interceptors> 

<context:component-scan base-package="be.coverpagecreator" /> 

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
    <property name="prefix" value="/WEB-INF/jsp/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="defaultEncoding" value="UTF-8" /> 
    <property name="useCodeAsDefaultMessage" value="false" /> 
    <property name="basenames"> 
     <list> 
      <value>/WEB-INF/messages/global</value> 
      <value>/WEB-INF/messages/messages</value> 
     </list> 
    </property> 
</bean> 

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver" /> 
</beans> 
+0

無法回答我自己的問題(聲譽太低,無法在8小時內回答)。問題出在Tomcat版本上。我試圖在新下載的6.0.29 Tomcat上運行第二個實例,而不是6.0.33,它似乎工作正常。 我要通過Tomcat更新日誌來嘗試找到造成這種情況的原因...如果我找到任何東西,我會在這裏報告。 – 2013-02-11 14:49:26

回答

0

的問題是與Tomcat的版本。我試圖在新下載的6.0.29 Tomcat上運行第二個實例,而不是6.0.33,它似乎工作正常。我要通過Tomcat更新日誌來嘗試找到造成這種情況的原因......如果我找到任何東西,我會在這裏回報。

+0

https://issues.apache.org/bugzilla/show_bug.cgi?id=50026 – 2013-06-20 11:25:48