从Spring 3.2.1升级到3.2.13在静态资源上给出了404

时间:2015-05-18 10:19:08

标签: spring spring-mvc

我们想升级我们的Spring依赖项,但是服务器找不到资源的问题。没有进行任何代码更改,这在3.2.1中工作正常。

我们像这样注册处理程序

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/kjernejournal.html").addResourceLocations("/kjernejournal.html").setCachePeriod(0);
}

日志

o.s.w.s.h.SimpleUrlHandlerMapping - Mapped URL path [/kjernejournal.html] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]

但是这会在以后失败,并出现以下错误。

12:07:04.520 [[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - Mapping [/kjernejournal.html] to HandlerExecutionChain with handler [org.springframework.web.servlet.resource.ResourceHttpRequestHandler@75288586] and 1 interceptor
12:07:04.520 [[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.s.web.servlet.DispatcherServlet - Last-Modified value for [/hpp-webapp/kjernejournal.html] is: -1
12:07:04.520 [[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.s.w.s.r.ResourceHttpRequestHandler - Trying relative path [/kjernejournal.html] against base location: ServletContext resource [/kjernejournal.html]
12:07:04.520 [[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'] DEBUG o.s.w.s.r.ResourceHttpRequestHandler - No matching resource found - returning 404

该文件确实存在于WAR文件的根目录中。

关于从哪里开始的任何想法?

1 个答案:

答案 0 :(得分:0)

找出问题所在。

当我们注册时

registry.addResourceHandler("/kjernejournal.html").addResourceLocations("/").setCachePeriod(0);

而不是

registry.addResourceHandler("/kjernejournal.html").addResourceLocations("/kjernejournal.html").setCachePeriod(0);

工作正常。所以问题似乎是resourceLocations指向文件而不是目录。来自ResourceHandlerRegistration JavaDoc:

  

添加一个或多个资源位置,从中提供静态内容。每个位置都必须指向一个有效的目录。

奇怪的是它之前有效,但是......