4

プロキシサーブレットを使用して、jetty が埋め込まれた HttpSessionListener インターフェイスを実装しようとしています。SessionListener を登録しましたが、まったく呼び出されません。コードは次のとおりです。

   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 ではありません。セッション作成イベントがトリガーされません。助けてください。セッション イベントを取得する手順は何ですか?

4

1 に答える 1

2

SessionManager が必要です。私は通常使用します: org.eclipse.jetty.server.session.HashSessionManager.HashSessionManager() および org.eclipse.jetty.server.session.SessionHandler.SessionHandler(SessionManager manager)

次に、コンテキストのハンドラーを設定する必要があります

context.setHandler(sessionHandler);

sessionHandler.addEventListener("Your Session Listener");
于 2014-02-12T13:40:50.210 に答える