我试图在运行Java8的Linux机器上在Jetty 9.2.3上build立持久会话。 我已将jetty-web.xml文件添加到$ {jetty.home} / webapps / app / WEB-INF /下的我的应用程序中,内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> <Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="sessionHandler"> <New class="org.eclipse.jetty.servlet.SessionHandler"> <Arg> <New class="org.eclipse.jetty.servlet.HashSessionManager"> <Set name="storeDirectory">/var/sessions</Set> </New> </Arg> </New> </Set> </Configure>
但是当我尝试启动Jetty时,出现以下错误:
2014-09-29 13:08:12.989:WARN:oejw.JettyWebXmlConfiguration:main: Unable to process jetty-web.xml java.lang.ClassNotFoundException: org.eclipse.jetty.servlet.SessionHandler at java.net.URLClassLoader$1.run(URLClassLoader.java:372) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:360) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:450) ...
任何帮助将不胜感激。
那么,似乎Jetty9文档中的类path解释了如何设置永久会话是不正确的。 只要我把org.eclipse.jetty.servlet。*中的path改成org.eclipse.jetty.server.session。*一切都像魅力一样。
最终的configuration看起来像这样:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> <Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="sessionHandler"> <New class="org.eclipse.jetty.server.session.SessionHandler"> <Arg> <New class="org.eclipse.jetty.server.session.HashSessionManager"> <Set name="storeDirectory">/var/sessions</Set> </New> </Arg> </New> </Set> </Configure>