首先此异常是在 (源码解析)(解决方法在最后。。)
org.apache.shiro.session.mgt.eis.AbstractSessionDAO的readSession方法中抛出的异常
public Session readSession(Serializable sessionId) throws UnknownSessionException {
Session s = doReadSession(sessionId);
if (s == null) {
throw new UnknownSessionException("There is no session with id [" + sessionId + "]");
}
return s;
}
readSession方法 中会调用抽象类AbstractSessionDAO的子类RedisSessionDAO中的doReadSession方法,此方法是会先从本地获取session,获取失败后再从redis中获取session,如果redis中session失效,则返回null,导致抛出异常。所以,要避免此异常,则需要在session失效情况下防止此方法被调用。
org.apache.shiro.session.mgt.DefaultSessionManager中
protected Session retrieveSession(SessionKey sessionKey) throws UnknownSessionException {
Serializable sessionId = getSessionId(sessionKey);
if (sessionId == null) {
log.debug("Unable to res