会议即将到期时如何获得通知?弹簧靴



我尝试使用

public void onApplicationEvent(ApplicationEvent event)
{

  if(event instanceof SessionDestroyedEvent){

 @WebListener
 public class SessionListener implements HttpSessionListener {
      @Override                                                                                                                                                                                                   
     public void sessionDestroyed(HttpSessionEvent se) {

第一个,我根本没有得到SessionDestoryedEvent事件。

似乎春天可能会在会议过期后通知我们。
是否有可靠的方法可以通知 before 会话过期?

最好是我不需要spring-session软件包的解决方案。

我没有使用以下代码获得sessionDestroyedsessionCreated

 import javax.servlet.http.HttpSessionEvent;
 import javax.servlet.http.HttpSessionListener;
 import javax.servlet.annotation.WebListener;
 import org.springframework.stereotype.Component;
 @WebListener
 public class MySessionListener implements HttpSessionListener {
   private static int totalActiveSessions;
   public static int getTotalActiveSession(){
     return totalActiveSessions;
   }
   public MySessionListener()
   {
     System.out.println("MySessionListener -------------");
   }
   @Override                                                                                                                                                                         
 public void sessionCreated(HttpSessionEvent arg0) {
   totalActiveSessions++;                                                                                                                                                            
 System.out.println("sessionCreated - add one session into counter");                                                                                                              
}
@Override                                                                                                                                                                         
 public void sessionDestroyed(HttpSessionEvent arg0) {
   totalActiveSessions--;
   System.out.println("sessionDestroyed - deduct one session from counter");
   }
 }

春季会话JDBC不支持会话事件的发布,这是由于这方面的基础数据存储的明显限制。一个关系数据库本身没有类似的pub-sub机制,可用于将事件传播到集群中的所有节点。

参考手册和JdbcOperationsSessionRepository Javadoc中都记录了这一点。

关于您问题的第二部分,支持事件发布的会话商店(例如Redis和Hazelcast(春季会议将其发布的所有事件转化为标准Servlet API的HttpSessionEvent实例。虽然您可以收听春季会议的活动层次结构,以通过标准的Servlet API机制来保持所有相关的互动。

根据HttpSessionHttpSessionListener#sessionDestroyed,会话无效时,会议/删除有关的会话事件将发布。我不确定在会话过期之前获得通知到底是什么意思,因为这是一个模糊的术语,取决于您对之前的的期望。

最新更新