升级到jetty 9.4替换HashSessionManager

Luk*_*uke 2 jetty jetty-9

升级到jetty 9.4之后,我注意到了一个ClassNotFoundException org.eclipse.jetty.server.session.HashSessionManager.我想我需要使用一个,FileSessionDataStore但我不知道这是怎么设置的SessionHandler.

我目前的配置是:

<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">my/store/path</Set>
                </New>
            </Arg>
        </New>
    </Set>
</Configure>
Run Code Online (Sandbox Code Playgroud)

我没有看到我需要做什么,SessionHandler没有拿a SessionDataStore,但是SessionCache可以设置它,但它看起来像是在构造函数中SessionCache想要的实现SessionHandler,我不知道如何在XML中这样做.

Jan*_*Jan 5

在jetty-9.4会话架构中,你SessionHandler需要一个SessionCache,可选择一个SessionDataStore.

有关OneServletContextWithSession编程示例,请参阅.

该示例使用了NullSessionDataStore,但原理与之相同FileSessionDataStore,这是HashSessionManager将会话存储到磁盘的旧功能的替代.

Jetty文档包含有关从以前版本的Jetty会话管理到9.4样式的更改的信息.

如果您按照文档中的链接进行操作,您还可以找到有关新会话体系结构的详细信息.

正如文档所解释的那样,在分发中运行时在jetty-9.4中配置会话的最简单方法是启用相应的模块.但是,如果您正在运行嵌入式,或者您只是想在xml中为特定Web应用程序设置会话管理,请参阅FileSessionDataStore以下示例代码:

<Get id="sh" name="sessionHandler">
    <Set name="sessionCache">
        <New class="org.eclipse.jetty.server.session.DefaultSessionCache">
          <Arg><Ref id="sh"/></Arg>
          <Set name="sessionDataStore">
            <New class="org.eclipse.jetty.server.session.FileSessionDataStore">
              <Set name="storeDir">/tmp/sessions</Set>
            </New>
          </Set>
        </New>
    </Set>
</Get>
Run Code Online (Sandbox Code Playgroud)