2013-02-11 2 views
0

У меня возникла «странная» проблема в обслуживании статического контента из моего webapp с использованием установки Spring-Hibernate.почти идентичные webapps ведут себя по-разному в обслуживании статического содержимого

У меня есть (небольшой) веб-приложение, которое использует DispatcherServlet служить любому URL, как это:/титульной/* отображение сервлета .The по умолчанию устанавливается в/статический/*

Пример:

<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 страницы в веб-приложение: index.jsp, new.jsp, error.jsp и includes.jsp (который не является актом ual page, duh) и отображение/процесс, который возвращает содержимое PDF или ошибки проверки при вводе неверных данных.

Эта настройка работает нормально в моем webapp.

Теперь для странной части: Я развернул тот же webapp на другом экземпляре Tomcat и изменил порты, чтобы они могли запускаться одновременно, и теперь ссылки на статический контент работают только наполовину. Только отображение для/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> 

И диспетчеру-сервлет конфигурации

<?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, чтобы попытаться найти причину этого ... Если я что-нибудь найду, я отчитаюсь здесь. –

ответ

0

Проблема была с версией Tomcat. Я попытался запустить второй экземпляр на недавно загруженном 6.0.29 Tomcat вместо 6.0.33, и, похоже, он работает нормально. Я собираюсь пройти через списки изменений Tomcat, чтобы попытаться найти причину этого ... Если я найду что-нибудь, я отчитаюсь здесь.

+0

https://issues.apache.org/bugzilla/show_bug.cgi?id=50026 –