gpt4 book ai didi

jetty - 升级到 jetty 9.4 替换 HashSessionManager

转载 作者:行者123 更新时间:2023-12-03 20:31:07 26 4
gpt4 key购买 nike

升级到 jetty 9.4 后,我注意到 org.eclipse.jetty.server.session.HashSessionManager 的 ClassNotFoundException .
我想我需要使用 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>

我看不出我需要做什么, SessionHandler不需要 SessionDataStore , 但是一个 SessionCache可以在上面设置,但它看起来像 SessionCache 的实现想要一个 SessionHandler在构造函数中,我看不到如何在 XML 中做到这一点。

最佳答案

在 jetty-9.4 session 架构中,您有 SessionHandler需要 SessionCache , 可选地采用 SessionDataStore .

OneServletContextWithSession 对于一个程序示例。

该示例使用 NullSessionDataStore ,但原理与FileSessionDataStore相同,这是旧的 HashSessionManager 的替代品将 session 存储到磁盘的能力。

jetty 文档包含信息 on changes from previous versions of Jetty session management to the 9.4 style .

如果您点击文档中的链接,您还可以找到有关新 session 架构的详细信息。

正如文档所解释的,当在发行版中运行时,在 jetty-9.4 中配置 session 的最简单方法是启用相应的模块。但是,如果您正在运行嵌入式,或者您只想在 xml 中为特定的 webapp 设置 session 管理,这里有一些设置 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>

关于jetty - 升级到 jetty 9.4 替换 HashSessionManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46332223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com