有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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)

我已经翻遍了所有的文档和很多帖子,比如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) 个答案