Jetty IllegalStateException:没有SessionManager

时间:2018-04-05 21:42:08

标签: java embedded-jetty jetty-8

我有一个使用Jetty 8.1.8的应用程序(我现在无法将其升级到最新的9.4,尽管我也尝试了最新的8.1.22)作为嵌入式服务器以编程方式启动。它已经很好用了好几年了,直到现在我们还没有改变任何一个,但是我们现在需要基本的用户会话,所以我们添加它。

不幸的是,当我们尝试提取会话以在HttpSession session = request.getSession(true);的处理程序中使用它时,我们得到以下异常:

java.lang.IllegalStateException: No SessionManager
    at org.eclipse.jetty.server.Request.getSession(Request.java:1270)

我已经挖掘了所有文档和许多SO帖子,例如thisthis,并且在不抛出上述异常的情况下无法使用此功能。

以下是我们在尝试添加会话的许多变体之后正在使用的代码。

Server server = new Server(Port);
server.setGracefulShutdown(5000);
server.setStopAtShutdown(true);

HandlerCollection handlers = new HandlerCollection();

// MainHandler inherits from Jetty's AbstractHandler and just contains a couple of additional simple variables that get updated when `handle` is called             
MainHandler main = new MainHandler(...);

// *** Session additions begin here         
HashSessionIdManager idManager = new HashSessionIdManager();
server.setSessionIdManager(idManager);

HashSessionManager sessionManager = new HashSessionManager();
SessionHandler sessions = new SessionHandler(sessionManager);

ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
context.setHandler(sessions);

handlers.setHandlers(new Handler[] { main, context });
// *** Session additions end here   

server.setHandler(handlers);
//server.setHandler(main); // this is how it was set previously

server.start();

有没有人对这可能有什么问题有所了解?希望这是我们忽略的简单事物。

0 个答案:

没有答案