2014-09-26 81 views
2

我只是通過實現ApplicationListener來創建一個偵聽程序。 代碼如下:春季安全應用程序調用事件列表程序

 

public class SessionCreationEventListener implements ApplicationListener{ 

    public void onApplicationEvent(SessionCreationEvent appEvent) { 
     SessionCreationEvent event = (SessionCreationEvent) appEvent; 
     //Object obj = null; 
     //UserInfo userInfo = null; 
     event.getSource(); 
    } 
} 
 

但是,無法調用此監聽。在調用監聽器的過程中我錯了什麼。

回答

4

在web.xml文件

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

添加該監聽器在一個簡單的應用程序的解決辦法是增加一個HttpSessionListener。 因此在我的web.xml:

<listener> 
 
    <listener-class>com.web.SessionCounter</listener-class> 
 
</listener>
爲監聽器代碼將是:
public class SessionCounter implements HttpSessionListener { 
 
    private int counter = 0; 
 

 
    @Override 
 
    public void sessionCreated(HttpSessionEvent event) { 
 
     counter++; 
 
     System.out.println("Total sessions created " + counter); 
 
    } 
 

 
    // other methods 
 
}
現在,每當春天創建一個會話,我的聽衆被激活,該消息將被記錄到控制檯。 已創建的會話總數1 該方法的侷限性在於上述偵聽器不在Spring環境中。如果我們需要在這裏訪問bean,那麼代碼會變得複雜。 Spring Security提供瞭解決此問題的方法。他們已經實現了一個監聽器 - HttpSessionEventPublisher。
public class HttpSessionEventPublisher implements HttpSessionListener { 
 
... 
 
}

+0

我必須在web.xml文件或spring的xml文件中添加此項。 – Kumar 2014-09-26 06:09:23

+0

在web.xml文件老大 – 2014-09-26 06:10:26

+0

這就是原因,我的聽衆沒有被調用。非常感謝。 – Kumar 2014-09-26 06:11:41