2013-07-20 40 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");