0

我正在尝试处理会话过期只是为了记录 porpouse。

我已经阅读了有关DestructionAwareBeanPostProcessor的信息,但它似乎没有被调用。所以我试图为bean实现一个destroy方法,这就是所谓的。

这种方法的问题是我无法区分 bean 何时因会话到期或“强制”注销而被销毁。

我试图实现一个 HttpSessionListener 但我无法访问会话 bean..

有什么帮助或建议吗?

4

1 回答 1

0

嗨@Enrichman,您可以执行以下操作:

public class HttpSessionRenew implements HttpSessionListener {
   SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");

   public HttpSessionRenew() {
        super();
   }

   public void sessionCreated(HttpSessionEvent event) {
        HttpSession session = event.getSession();
        System.out.println("TIME: " + session.getMaxInactiveInterval());
        System.out.println("ID Session "+session.getId()+" create "+session.getCreationTime());
   }

   public void sessionDestroyed(HttpSessionEvent event) {
        HttpSession session = event.getSession();

        // print out the session id
        if(session != null) {
           System.out.println( "Session Id: " + session.getId() );
           synchronized(session) {
              // invalidating a session destroys it
              session.invalidate();
              System.out.println("DESTROYD SESSION");
           }
        }
        System.out.println("ID Session "+session.getId()+" destroyd "+ f.format(new Date()));
   }
 }

web.xml

 <listener>
     <listener-class>your.fully.qualified.name.HttpSessionRenew</listener-class>
 </listener>

 <!-- CONFIGURATION TIME -->
 <session-config>
     <session-timeout>30</session-timeout>
 </session-config>

我希望能帮助你:)

于 2013-01-31T05:48:54.657 回答