【问题标题】:Spring session scoped bean in EJB 2 Stateless Session BeanEJB 2 无状态会话 Bean 中的 Spring 会话范围 bean
【发布时间】:2010-09-02 20:40:17
【问题描述】:

我正在使用 Spring 向旧的 EJB 2 应用程序添加一些功能。 EJB 使用的 Spring 应用程序上下文是 Web 应用程序的父上下文,如 here 所述。

我正在尝试使用 EJB 中的会话范围 bean。有问题的 bean 是从 EJB 应用程序上下文初始化的。

但是,我在尝试访问 bean 时收到此错误:

Caused by: java.lang.IllegalStateException: No Scope registered for scope 'session'

From what I've read, 这是因为 parentContextKey 不是 WebApplicationContext 的实例。有没有人知道我如何才能让它发挥作用?

【问题讨论】:

    标签: java spring ejb


    【解决方案1】:

    您可以尝试手动注册范围:

    <bean class="org.springframework.beans.factory.config.CustomScopeConfigurer">
        <property name="scopes">
            <map>
                <entry key="session">
                    <bean class="org.springframework.web.context.request.SessionScope"/>
                </entry>
            </map>
        </property>
    </bean>
    

    我想它应该可以工作,因为SessionScope 本身只依赖于RequestContextListener 公开的线程绑定请求上下文,而不依赖于应用程序上下文。

    【讨论】:

    • 正是我需要的。谢谢!
    【解决方案2】:

    您只能在 Spring WebApplicationContext 中使用会话范围的 Spring bean。没有办法解决这个问题 - 没有 WebApplicationContext,没有会话范围。

    也许如果您解释了您想要实现的目标,我们可以提供进一步的帮助。您是否可能将有状态会话 EJB 与 servlet 会话混为一谈?它们不是一回事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 2012-10-31
      • 2014-12-26
      相关资源
      最近更新 更多