第一步:解决版本冲突问题
pom.xml中把shiro默认使用的quartz 1.6.1版本排除掉
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-quartz</artifactId>
<version>${shiro.version}</version>
<exclusions>
<exclusion>
<groupId>org.opensymphony.quartz</groupId>
<artifactId>quartz</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.0</version>
</dependency>
第二步:修改sessionValidationScheduler的类为ExecutorServiceSessionValidationScheduler
spring-shiro.xml
<!-- 会话验证调度器 -->
<!-- 会话验证调度器实现都是直接调用AbstractValidatingSessionManager 的validateSessions方法进行验证。
如果在会话过期时不想删除过期的会话,可以设置SessionManager的deleteInvalidSessions属性为false ,
默认是开启的,在会话过期后会调用SessionDAO的delete方法删除会话:如会话时持久化存储的,可以调用此方法进行删除。 -->
<bean id="sessionValidationScheduler"
class="org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler">
<property name="interval" value="1800000" />
<property name="sessionManager" ref="sessionManager" />
</bean>