Java 是否有任何方法可以在servlet中获取jetty上的所有有效会话密钥值?
我有一个带有两个不同servlet的jetty容器,让我们调用a和B。 在特殊情况下,servlet a中会出现qr码(用户已登录并正在使用其桌面),用户通过其移动设备读取该qr码,并在其移动设备上重定向servlet B。这里的问题是我不能继续他的治疗Java 是否有任何方法可以在servlet中获取jetty上的所有有效会话密钥值?,java,session,servlets,jetty,session-variables,Java,Session,Servlets,Jetty,Session Variables,我有一个带有两个不同servlet的jetty容器,让我们调用a和B。 在特殊情况下,servlet a中会出现qr码(用户已登录并正在使用其桌面),用户通过其移动设备读取该qr码,并在其移动设备上重定向servlet B。这里的问题是我不能继续他的治疗 二维码带来了用户会话密钥,但我无法验证此会话是否有效。我想知道是否有任何特殊的方法来请求jetty上的有效会话密钥,因为这两个servlet位于同一个服务器中 我找到的最佳解决方案是建立一个HttpSessionListener:) 为此,我们
二维码带来了用户会话密钥,但我无法验证此会话是否有效。我想知道是否有任何特殊的方法来请求jetty上的有效会话密钥,因为这两个servlet位于同一个服务器中 我找到的最佳解决方案是建立一个HttpSessionListener:) 为此,我们必须覆盖一些方法:
public class HttpSessionCollector implements HttpSessionListener {
private static final Map<String, HttpSession> sessions = new HashMap<String, HttpSession>();
@Override
public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
sessions.put(session.getId(), session);
}
@Override
public void sessionDestroyed(HttpSessionEvent event) {
sessions.remove(event.getSession().getId());
}
public static HttpSession find(String sessionId) {
return sessions.get(sessionId);
}
public static Map<String, HttpSession> getSessions() {
return sessions;
}
公共类HttpSessionCollector实现HttpSessionListener{
私有静态最终映射会话=new HashMap();
@凌驾
已创建公共无效会话(HttpSessionEvent事件){
HttpSession session=event.getSession();
sessions.put(session.getId(),session);
}
@凌驾
public void sessionDestroyed(HttpSessionEvent事件){
移除(event.getSession().getId());
}
公共静态HttpSession查找(字符串sessionId){
return sessions.get(sessionId);
}
公共静态映射getSessions(){
返回会议;
}
}
然后在/WEB-INF/WEB.xml上设置侦听器
<web-app>
<listener>
<listener-class>[yourpack].HttpSessionCollector</listener-class>
</listener>
...
</web-app>
[yourpack].HttpSessionCollector
...
现在我们可以在包中的任何地方调用HttpSessionCollector。
e、 g.为了获得所有有效会话,我们只需:
private Map<String, HttpSession> sessions;
sessions=HttpSessionCollector.getSessions();
私有映射会话;
sessions=HttpSessionCollector.getSessions();
概念上相当不错。出于规模的考虑,进一步的改进可能是使用不在内存中的东西(redis或mongodb商店可能会做得很好)。同步也可能成为一个问题