2013-07-20 67 views
1

我試圖實現HttpSessionListener與代理servlet嵌入碼頭界面,我已經註冊SessionListener,但沒有得到所有調用,這裏是代碼,嵌入式碼頭實現HttpSessionListener

public class JettyProxy { 

    public static void main(String[] args) throws Exception { 
     Server server = new Server(); 
     CustomProxyServlet customProxyServlet = new CustomProxyServlet(); 


     ServerConnector connector = new ServerConnector(server); 
     connector.setPort(8888); 
     server.addConnector(connector); 

     ConnectHandler proxy = new ConnectHandler(); 

     server.setHandler(proxy); 

     ServletContextHandler context = new ServletContextHandler(proxy, "/", 
       ServletContextHandler.SESSIONS); 
     ServletHolder proxyServlet = new ServletHolder(customProxyServlet); 

     context.addServlet(proxyServlet, "/*"); 

     if (context.getSessionHandler() == null) { 
      System.out.println("Session handler is null"); 
     } else { 
      System.out.println("Session handler is not null"); 
     } 

     if (context.getSessionHandler().getSessionManager() == null) { 
      System.out.println("Managaer it null"); 
     } else { 
      System.out.println("Manager is not null"); 
     } 

     context.getSessionHandler().addEventListener(new CustomSessionHandler()); 

     server.start(); 
     server.join(); 
    } 

} 

SessionHandler不null,會話創建事件沒有被觸發,請幫助我,獲取會話事件的過程是什麼?

回答

0

你應該有一個SessionManager。我通常使用: org.eclipse.jetty.server.session.HashSessionManager.HashSessionManager() 和 org.eclipse.jetty.server.session.SessionHandler.SessionHandler(SessionManager經理)

,那麼你應該設置處理爲背景

context.setHandler(sessionHandler); 

sessionHandler.addEventListener("Your Session Listener");