Я нашел много ссылок на эту проблему в Google, но ответов нет.Я использую последнюю версию Jetty (8.1.2.v20120308), и я не могу получить встроенный сервлет для использования сессий.Пример приведен в Scala, но он должен быть читаем любым программистом Java.
val server = new Server();
val connector = new SelectChannelConnector()
connector.setPort(Integer.getInteger("jetty.port", 8080).intValue())
server.setConnectors(Array(connector))
val webapp = new ServletContextHandler(ServletContextHandler.SESSIONS)
webapp.setContextPath("/")
webapp.setResourceBase(webDir)
webapp.setServer(server)
val brzyServ = new ServletHolder(new BrzyDynamicServlet())
webapp.addServlet(brzyServ, "*.brzy")
server.setHandler(webapp);
server.start()
в коде моего сервлета:
...
log.debug("session manager: {}",req.asInstanceOf[Request].getSessionManager)
val session = req.getSession
...
req.getSession выдает это исключение, и строка отладки перед ним всегда равна нулю.
java.lang.IllegalStateException: No SessionManager
at org.eclipse.jetty.server.Request.getSession(Request.java:1173)
В журнале я вижу это:
DEBUG org.eclipse.jetty.server.session - sessionManager=org.eclipse.jetty.server.session.HashSessionManager@2a8ceeea
DEBUG org.eclipse.jetty.server.session - session=null
Я не уверен, что это актуально, но может показаться, что есть менеджер сеансов, но он недоступен назапрос.
Я пробовал это с WebAppContext с тем же результатом.Не говоря уже о явной настройке sessionManager дюжиной разных способов.