2012-01-10 3 views
0

정적 리소스를 제공해야하는 Spring MVC webapp가 있습니다. 그러므로 나는 다음과 같은 봄 구성이 :mvc : 리소스가 ClassCastException으로 연결됩니다.

<mvc:resources location="/resources/" mapping="/resources/**"/> 

그러나 자원에 대한 각 요청은 같은 추악한 ClassCastException이 리드 : 나는 버전 3.1.0.RELEASE 및 3.0.4로 그것을 시도

java.lang.ClassCastException: java.lang.String cannot be cast to org.springframework.core.io.Resource 
at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.getResource(ResourceHttpRequestHandler.java:158) 
at org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(ResourceHttpRequestHandler.java:109) 
at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at com.myproject.filter.SetP3PHeaderFilter.doFilter(SetP3PHeaderFilter.java:48) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at com.myproject.filter.SessionIdUrlFilter.disableDefaultURLEncoding(SessionIdUrlFilter.java:83) 
at com.myproject.filter.SessionIdUrlFilter.avoidSessionFixation(SessionIdUrlFilter.java:53) 
at com.myproject.filter.SessionIdUrlFilter.doFilter(SessionIdUrlFilter.java:42) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
at java.lang.Thread.run(Thread.java:619) 

. 스프링 프레임 워크의 릴리스와 똑같은 행동을 관찰했다.

+0

여기에 전체 구성 XML을 게시하면 도움이 될 것입니다. :) – ligerdave

답변

1

이것은 정말 이상한하지만 문제는이 같은 변환 서비스 정의했다고, 것 같다 :

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> 
    <property name="converters"> 
     <list> 
      <bean class="com.example.CustomConverter" /> 
     </list> 
    </property> 
</bean> 

여기에 참조 된 : 내가 변경하는 경우

<mvc:annotation-driven conversion-service="conversionService" /> 

밝혀를 bean id는 f와 다른 어떤 것입니다. 이자형. cs 잘 작동합니다. 설명서와 쇼케이스에서 동일한 ID가 사용되는 것이 이상합니다.

1

구성에 mvc:annotation-driven이 누락되었을 수 있습니다. 즉,이 오류 메시지의 원인이 될 수있는 문자열을 리소스로 변환하는 속성 편집기를 등록한 것입니다.

+0

Thx for the hint. 사실 나는 그것을 바로 위에두고있다. – hackbert

+0

Thx 다시 - 당신은 속성 편집기로 나의주의를 끌었습니다. – hackbert

관련 문제