gpt4 book ai didi

java - Jetty 和自定义 sessionIdManager

转载 作者:行者123 更新时间:2023-11-30 09:33:35 25 4
gpt4 key购买 nike

为了拥有自定义 session 存储,我实现了自定义 sessionManager(通过扩展 NoSqlSessionManager)和 sessionIdManager。我的代码(连同它需要的 jars)进入了 ${jetty.home}/lib/ext(BTW 版本 8.1.4)。在 start.ini 中,我包含了另一个包含以下内容的配置文件:

<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Set name="sessionIdManager">
<New id="customIdMgr" class="com.me.customSessionIdManager">
<Arg>...</Arg>
</New>
</Set>
</Configure>

Jetty 启动并且 sessionIdManager 似乎正在工作。至少正在调用 scavenge() 方法。到目前为止,一切都很好。下一步是将我的自定义 sessionManager 与我选择的 WebAppContext 相关联。我是在覆盖模板 (overlay.xml) 中完成的,内容如下:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">

<Get name="server">
<Get id="customIdMgr" name="sessionIdManager"/>
</Get>


<Set name="sessionHandler">
<New class="org.eclipse.jetty.server.session.SessionHandler">
<Arg>
<New class="com.me.customSessionManager">
<Set name="sessionIdManager"><Ref id="customIdMgr"/></Set>
</New>
</Arg>
</New>
</Set>

</Configure>

但是在启动 Jetty 时我得到了这个:

WARN:oejx.XmlConfiguration:Config error at <Get id="customIdMgr" name="sessionIdManager"/> java.lang.NullPointerException

...这意味着在处理覆盖时,在主 jetty 配置中注册的对象现在消失了。

知道我在这里做错了什么吗?

最佳答案

经过大量调试后,问题的根源是<Get name="server">。返回空值。很可能对 Server 类的引用在部署过程的后期注入(inject)到 WebAppContext 中。因此,我没有使用服务器来引用它 <Ref id="Server">成功了。

关于java - Jetty 和自定义 sessionIdManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12088146/

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