当前位置: 首页 > 知识库问答 >
问题:

Spring未使用requestcontextlistener初始化会话bean

相化
2023-03-14

我正在尝试将我的webapp与enunciate解耦,我有一个web.xml,如下所示,但当Spring3启动时,我得到了:

自动连线依赖项的注入失败;嵌套异常为Org.SpringFramework.Beans.Factory.BeanCreationException:无法自动连接方法:....当前线程的作用域“session”不是活动的;如果您打算从单例引用这个bean,请考虑为它定义一个有作用域的代理;嵌套异常是java.lang.IllegalStateException:找不到线程绑定请求:您是引用实际web请求之外的请求属性,还是处理最初接收线程之外的请求?如果您实际在web请求中操作,并且仍然接收到该消息,那么您的代码可能是在DispatcherServlet/DispatcherPortlet之外运行的:在这种情况下,使用RequestContextListener或RequestContextFilter来公开当前请求。

问题是我有一个请求上下文侦听器:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <filter>
        <filter-name>org.springframework.security.filterChainProxy</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>org.springframework.security.filterChainProxy</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <listener>
        <listener-class>
            org.springframework.web.context.request.RequestContextListener
        </listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>jersey2</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>org.mypackage.web</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.config.feature.Trace</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>jaxrs.providers</param-name>
            <param-value>
                org.mypackage.web.rest.SerializableProvider
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
      <servlet-mapping>
        <servlet-name>jersey2</servlet-name>
        <url-pattern>/rest/*</url-pattern>
      </servlet-mapping>
  <servlet-mapping>
    <servlet-name>jersey2</servlet-name>
    <url-pattern>/rest/myurl/session</url-pattern>
  </servlet-mapping>
</web-app>

那么为什么Spring不能正常启动呢?这可能是因为它的线程与sessionbean相关,并且sessionbean与sessionbean相关吗?

共有1个答案

谢承颜
2023-03-14

根据错误,您不能自动连接会话作用域类,因为您的单例类是在应用程序启动时加载的。开始的会话中不存在。

您需要创建代理接口

例如:@scope(value=“session”,proxyMode=scopedproxymode.interfaces)

 类似资料:
  • 在本教程之后,我将尝试实现Spring会话Spring HttpSession教程 但是当我启动应用程序时,我遇到了一个初始化错误。 异常在线程"main"org.springframework.beans.factory.不满意依赖异常:错误创建bean与名称'springSessionRepositoryFilter'定义在类org.springframework.session.data.r

  • 我有一个应用程序,我正在扩展它以提供REST API。在主站点中一切正常,但当我尝试访问REST API时,我在异常日志中得到以下内容: 禁用延迟加载将解决此问题,但会导致不可接受的性能(加载时间从 200 毫秒到 22 秒)。我不知道如何处理这个问题。 我刚开始在ColdFusion中Rest,在我看来,CFC正在以一种不寻常的方式被处理。它们似乎没有被初始化(init方法似乎没有运行),现在看

  • 我正在制作一个网站,我试图在其中订购配料。我选择配料并输入其数量,然后单击添加。我重复了几次。然后我进入下一页,在其中我选择了一个供应商。然后我按“订单”。 预计将Nabavka插入数据库并打开一个页面,说明订单成功,但我收到一个异常,告诉我不能懒惰地初始化它。 来自NabavkaController。java: Nabavka.java: 纳米尔尼卡。java: 纳巴夫卡科帕。java: 纳巴夫

  • 我正在用Spring roo管理一个项目,并且我正在使用hibernate,当我试图使用这个控制器方法时,我得到了这个异常消息:无法初始化代理-没有会话 以下是控制器方法: 以及导致异常的服务方法 为什么会出现这种异常?即使我用@Transactionnal注释我的服务方法,我也会查看applicationContext。xml文件,并找到此行 是 mode=“aspectj” 部分取消了该注释的

  • 我在对象中使用Hibernate,即使会话未关闭,也会得到lazyinitializationexception。 以下是争议对象之间的关系。有3个对象: 目标A 对象B 对象C ObjectA包括ObjectB作为FetchType=EAGER ObjectB包括ObjectC作为FetchType=LAZY 我们正在获取ObjectA。因此,由于急切获取类型,它会自动获取ObjectB。但是当