我使用spring创建了一个RESTful Web服务。我有会话作用域的控制器。
当我尝试执行GET请求时,它实际上效果很好但是当DispatcherServlet尝试确定Last-Modified值时,我得到一个忽略的异常。
2010-10-28 11:32:50,487 [http-8080-2] DEBUG org.springframework.web.servlet.DispatcherServlet - 名为'Spring MVC Dispatcher Servlet'的DispatcherServlet确定[/ apm /的最后修改值]用户/ 1009]
2010-10-28 11:32:50,491 [http-8080-2] DEBUG org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - 请求[/ users / 1009]的匹配模式是[/ users / {ID}]
2010-10-28 11:32:50,491 [http-8080-2] DEBUG org.springframework.web.servlet.DispatcherServlet - getLastModified中抛出异常 org.springframework.beans.factory.BeanCreationException:创建名为'scopedTarget.userController'的bean时出错:当前线程的作用域'session'不活动;考虑为这个bean定义一个范围代理,如果你想从一个单例引用它;嵌套异常是java.lang.IllegalStateException:找不到线程绑定请求:您是指在实际Web请求之外的请求属性,还是在最初接收线程之外处理请求?如果您实际在Web请求中操作并仍然收到此消息,则您的代码可能在DispatcherServlet / DispatcherPortlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter来公开当前请求。 在org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:339)
POST请求也有效但我运行时没有任何异常。
知道为什么会这样吗?我能做些什么来阻止这种情况?!
谢谢!
答案 0 :(得分:2)
这是Spring(SPR-7456)中的一个错误,已在Spring 3.0.4中修复。
作为以前版本的解决方法,您可以添加
<listener>org.springframework.web.context.request.RequestContextListener</listener>
到web.xml
。