java Jetty IllegalStateException:无会话管理器
我有一个应用程序使用Jetty 8.1.8(虽然我也尝试了最新的8.1.22,但目前无法将其升级到最新的9.4),因为嵌入式服务器是以编程方式启动的。多年来,它一直工作得很好,直到现在,我们还没有改变任何一个,但是我们现在需要基本的用户会话,所以我们正在添加它
不幸的是,当我们试图用HttpSession session = request.getSession(true);
提取会话以在我们的处理程序中使用它时,会出现以下异常:
java.lang.IllegalStateException: No SessionManager
at org.eclipse.jetty.server.Request.getSession(Request.java:1270)
我已经翻遍了所有的文档和很多帖子,比如this和this,如果不抛出上面的异常,我就无法实现这一点
在尝试添加会话的许多变体之后,下面是我们当前使用的代码
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) 个答案