我正在尝试处理会话过期,仅用于记录porpouse。
我已经阅读了DestructionAwareBeanPostProcessor,但似乎没有被调用。所以我试图为bean实现一个destroy方法,这就是调用它。
这种方法的问题在于我无法区分bean在会话到期时被销毁的时间或“强制”注销的消息。
我试图实现一个HttpSessionListener但我无法访问会话bean ..
任何帮助或建议?
答案 0 :(得分: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>
我希望能帮到你:)