5

弹簧:2.5.6.SEC01

DWR:2.0.5

我想使用 DWR 的会话范围 bean。当我将 bean 配置为单例时,它工作正常。我读了这个导师:(http://directwebremoting.org/dwr/server/integration/spring.html)并修改了我的applicationContext.xml,但它仍然是错误的地方。

我的 applicationContext.xml:

http://pastebin.com/m8d57f18

它很好,但是当我使用 AJAX 函数时,我得到了这个异常:

11:31:09,593 INFO [DefaultRemoter] Exec: DBTestAjaxFunc.testJNDI() 11:31:09,609 WARN [DefaultRemoter] 方法执行失败:org.springframework.beans.factory.BeanCreationException:创建名为“scopedTarget.dbtestajax”的 bean 时出错:范围“会话”对当前线程不活动;如果您打算从单例中引用它,请考虑为该 bean 定义一个作用域代理;嵌套异常是 java.lang.IllegalStateException:未找到线程绑定请求:您是指实际 Web 请求之外的请求属性,还是在原始接收线程之外处理请求?如果您实际上是在 Web 请求中操作并且仍然收到此消息,则您的代码可能在 DispatcherServlet/DispatcherPortlet 之外运行:在这种情况下,

似乎没有创建 aop 代理,但我不知道为什么。

类路径中的库:

  • 方面jrt.jar
  • aspectjweaver.jar
  • cglib-nodep-2.2.jar
  • dwr.jar
  • spring.jar
  • spring-aop.jar
  • spring-dwr-2.0.xsd
  • spring-web.jar
  • spring-webmvc.jar

任何的想法?(谢谢!)

4

2 回答 2

7

为了使会话或请求范围的 bean 在 Spring 中工作,必须将当前请求和会话与当前线程相关联。通常,这将由 完成DispatcherServlet,但如果您不使用它,那么您需要一个替代方案。

在这种情况下,替代方案是RequestContextListeneror RequestContextFilter,您可以将其中任何一个连接到您的web.xml, 和两个操作系统,这将允许您使用请求范围和会话范围的 bean。只需确保配置它们web.xml以便 DWR 请求通过它们。

于 2010-01-26T15:28:17.263 回答
1

检查 Session 范围的 bean 是否被全局或单例访问。在这种情况下,您需要降低调用 bean 的范围。

于 2011-03-30T18:08:00.550 回答