春天:2.5.6.SEC01
DWR:2.0.5
我想使用DWR中的会话范围bean。当我将bean配置为单例时,它工作正常。我读了这个导师: (http://directwebremoting.org/dwr/server/integration/spring.html) 并修改了我的applicationContext.xml,但在某处仍然存在错误。
我的applicationContext.xml:
它很好,但是当我使用AJAX函数时,我得到了这个例外:
11:31:09,593 INFO [DefaultRemoter] 执行:DBTestAjaxFunc.testJNDI() 11:31:09,609 WARN [DefaultRemoter] 方法执行失败: org.springframework.beans.factory.BeanCreationException: 使用名称创建bean时出错 'scopedTarget.dbtestajax':范围 'session'不适用于 当前线程;考虑定义一个 如果你这个bean的作用域代理 打算从a中引用它 单;嵌套异常是 java.lang.IllegalStateException:没有 找到线程绑定请求:是吗? 引用请求属性 在实际的Web请求之外,或 处理外的请求 最初接收线程?如果你 实际上是在网络中运作 请求并仍然收到此 消息,您的代码可能正在运行 在外面 DispatcherServlet的/ DispatcherPortlet的: 在这种情况下,使用 RequestContextListener或 RequestContextFilter来公开 当前的要求。
似乎没有创建aop代理,但我不知道为什么。
类路径中的Libs:
有什么想法吗? (谢谢!)
答案 0 :(得分:7)
为了使会话或请求范围的bean在Spring中工作,必须将当前请求和会话与当前线程相关联。通常情况下,这将由DispatcherServlet
完成,但如果您不使用,则需要替代方案。
在这种情况下,替代方案是RequestContextListener
或RequestContextFilter
,您可以将其中任何一个连接到web.xml
,以及两个允许您使用请求和会话的操作系统范围豆。只需确保在web.xml
中配置它们,以便DWR请求通过它们。
答案 1 :(得分:1)
检查全局或单例是否访问会话范围bean。在这种情况下,您需要降低调用bean的范围。