【问题标题】:Using session scoped Spring bean with DWR将会话范围的 Spring bean 与 DWR 一起使用
【发布时间】:2011-01-09 11:28:02
【问题描述】:

春天: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 信息 [DefaultRemoter] 执行:DBTestAjaxFunc.testJNDI() 11:31:09,609 警告 [DefaultRemoter] 方法执行失败: org.springframework.beans.factory.BeanCreationException: 创建具有名称的 bean 时出错 'scopedTarget.dbtestajax':范围 “会话”对 当前线程;考虑定义一个 这个 bean 的作用域代理,如果你 打算从 单身人士;嵌套异常是 java.lang.IllegalStateException:否 找到线程绑定请求:Are you 引用请求属性 在实际 Web 请求之外,或 处理外部的请求 最初接收线程?如果你 实际上是在网络中运行 请求并且仍然收到这个 消息,您的代码可能正在运行 在外面 DispatcherServlet/DispatcherPortlet: 在这种情况下,使用 RequestContextListener 或 RequestContextFilter 公开 当前请求。

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

类路径中的库:

  • aspectjrt.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

有什么想法吗? (谢谢!)

【问题讨论】:

  • 你正在经历DispatcherServlet in web.xml的春天吗?
  • 是的,当我不在页面中使用任何 ajax 功能时,它可以工作,就像带有控制器的弹簧表单等。
  • 不是,我的意思是DWR请求是通过DispatcherServlet,还是直接到DWR?

标签: spring dwr


【解决方案1】:

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

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

【讨论】:

  • 如果我的 web.xml 有一个 spring DispatcherServlet 和一个 DwrServlet,那么 dwr 请求将通过 DwrServlet 不是吗?哦,这些类是“默认”类。如果我想扩展它们的功能,我必须从它们继承,对吗?如果是这样,我的代码会去哪里,我会将继承的类放在哪里,我将如何链接到它? ...虽然我应该提出一个新问题...
【解决方案2】:

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

【讨论】:

  • 显然不是这个问题的答案,但它解决了我的问题。谢谢。
  • 或者通过创建一个作用域代理:@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
  • 我认为这需要 RequestContextLisener 和 bean 有一个接口。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多