Jetty 9迁移至Jetty 10/11:缺失类的替代方案咨询
嘿,我之前刚完成过Jetty 9到11的迁移,碰到过和你一样的问题!针对你提到的几个找不到的类,给你梳理下对应的替代方案:
MemSession:Jetty 10/11里已经移除了这个类,现在内存会话的默认实现是
org.eclipse.jetty.server.session.DefaultSession。如果你的代码之前依赖MemSession来处理内存中的会话实例,直接切换到DefaultSession就可以,它完全覆盖了原来MemSession的功能,而且是现在Jetty会话模块的标准实现。AbstractSessionManager:这个抽象类在新版本中被重构掉了,替代的方案是直接继承
org.eclipse.jetty.server.session.DefaultSessionManager——它是Jetty 10+默认的会话管理器,包含了原来AbstractSessionManager的核心逻辑,并且提供了更清晰的扩展点。如果之前你是基于AbstractSessionManager做自定义会话管理,现在只需要把你的实现逻辑迁移到继承DefaultSessionManager即可。另外,新版本也提供了SessionManager.Wrapper接口,如果你需要更轻量的包装扩展,也可以考虑实现这个接口。AbstractSessionIdManager:同样被重构,现在对应的是
org.eclipse.jetty.server.session.DefaultSessionIdManager,这是新版本默认的会话ID管理器。如果之前你有自定义会话ID生成、管理的需求,直接继承这个类就行,它保留了足够的扩展方法,能满足大部分自定义场景。
另外提个小建议,Jetty 10/11在会话模块做了架构优化,很多抽象类都被具体的默认实现替代了,如果你之前的代码依赖这些抽象类做扩展,建议先看看Default系列类的源码,它们的API设计更简洁,也更符合新版本的架构逻辑。虽然官方迁移文档不够详细,但查看Jetty源码的变更记录能帮你更快理解这些类的演化~
备注:内容来源于stack exchange,提问作者Hiren

