会话事件侦听器在创建新会话时引发异常

时间:2015-07-22 09:01:56

标签: spring-mvc session listener web.xml setattribute

我正在尝试在我的一个控制器中创建一个新的Session。 一切正常,直到我在web.xml中添加了一个监听器 您可以看到以下是响应。我试过谷歌搜索但没有发现任何东西。实际上我正在尝试创建一个新的会话,如果一个不存在。请帮助!

    <listener>
         <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
    </listener>

我的Java代码片段如下:

    HttpSession currentSession = null;
    currentSession = httpRequest.getSession(false);
    if(currentSession != null)
    {
        logger.info("No Session object found in context!");
        currentSession.setAttribute("NAME", seller.getSellerName());
        currentSession.setAttribute("EMAIL", seller.getEmail());
        currentSession.setAttribute("TOKEN", seller.getSsoToken());
    }
    else
    {
        logger.info("Creating a new Session Object!");
        currentSession = httpRequest.getSession(true);
        currentSession.setAttribute("NAME", seller.getSellerName());
        currentSession.setAttribute("EMAIL", seller.getEmail());
        currentSession.setAttribute("TOKEN", seller.getSsoToken());
    }

日志是:

    Jul 22, 2015 2:17:54 PM org.apache.catalina.session.StandardSession tellNew
    SEVERE: Session event listener threw exception
    java.lang.NullPointerException
at org.springframework.security.web.session.HttpSessionEventPublisher.sessionCreated(HttpSessionEventPublisher.java:69)
at org.apache.catalina.session.StandardSession.tellNew(StandardSession.java:423)
at org.apache.catalina.session.StandardSession.setId(StandardSession.java:395)
at org.apache.catalina.session.StandardSession.setId(StandardSession.java:376)
at org.apache.catalina.session.ManagerBase.createSession(ManagerBase.java:655)
at org.apache.catalina.connector.Request.doGetSession(Request.java:2933)
at org.apache.catalina.connector.Request.getSession(Request.java:2318)
at org.apache.catalina.connector.RequestFacade.getSession(RequestFacade.java:899)
at com.snapdeal.cpms.web.controller.SSOLoginController.validateTokenSso(SSOLoginController.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。 我只是改变了罐子。它开始工作了。
使用
spring-security 4.0.3 for spring framework 4.2.x.
spring-security 4.0.2 for spring framework 4.1.x。