【发布时间】:2019-06-21 06:39:05
【问题描述】:
我最近将一个使用嵌入式 Jetty 的项目从 6.1 版移到了 9.4 版。 这比我预期的要容易。现在只剩下一项功能需要迁移: 该项目有一个管理工具,它显示所有加载的上下文(它可以托管多个 Web 应用程序),并且对于每个上下文,它列出了已注册的 HTTP 会话,包括会话属性等。 在 Jetty 6 中,它是这样的:
Handler[] handlers = jettyServer.getHandlers();
for (Handler h : handlers) {
if (h instanceof ContextHandlerCollection) {
ContextHandlerCollection ch = (ContextHandlerCollection) h;
Handler[] contexts = ch.getHandlers();
for (Handler context : contexts) {
if (context instanceof WebAppContext) {
WebAppContext wapp = (WebAppContext) context;
// Here, I am stuck in migrating this to jetty 9:
SessionManager sm = wapp.getSessionHandler().getSessionManager();
if (sm instanceof HashSessionManager) {
HashSessionManager hsm = (HashSessionManager) sm;
Map<?,?> sessions = hsm.getSessionMap();
if (sessions != null) {
for (Map.Entry<?,?> entry : sessions.entrySet()) {
if (entry.getValue() instanceof HttpSession) {
HttpSession s = (HttpSession) entry.getValue();
}
}
}
}
}
}
}
}
新的 Jetty 9 结构有点不同,但我能够访问所有上下文。但在 Jetty 9 中,我无法从上下文中访问 SessionManager。
wapp.getSessionHandler().getSessionManager();
不再起作用,SessionHandler 上的 getSessionManager() 方法不再存在。在搜索了几个小时之后,我没有找到任何方法从 WebAppContext 到 HTTPSession 在该上下文中的实例。
有谁知道去那里的方法吗?
【问题讨论】:
标签: jetty embedded-jetty httpsession