使用会话范围的Spring bean和DWR

5 spring dwr

春季: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时出错:范围'session'对于当前线程不活动; 考虑为这个bean定义一个范围代理,如果你想从一个单例引用它; 嵌套异常是java.lang.IllegalStateException:找不到线程绑定请求:您是指在实际Web请求之外的请求属性,还是在最初接收线程之外处理请求?如果您实际在Web请求中操作并仍然收到此消息,则您的代码可能在DispatcherServlet/DispatcherPortlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter来公开当前请求.

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

类路径中的Libs:

  • aspectjrt.jar
  • aspectjweaver.jar
  • CGLIB的节点p-2.2.jar
  • dwr.jar
  • 的spring.jar
  • 弹簧aop.jar
  • 弹簧DWR-2.0.XSD
  • 弹簧web.jar
  • 弹簧webmvc.jar

任何的想法?(谢谢!)

ska*_*man 7

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

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