diff --git a/spring-session/src/main/java/org/springframework/session/jdbc/JdbcOperationsSessionRepository.java b/spring-session/src/main/java/org/springframework/session/jdbc/JdbcOperationsSessionRepository.java index 7654ccb..cf5f348 100644 --- a/spring-session/src/main/java/org/springframework/session/jdbc/JdbcOperationsSessionRepository.java +++ b/spring-session/src/main/java/org/springframework/session/jdbc/JdbcOperationsSessionRepository.java @@ -176,7 +176,7 @@ public class JdbcOperationsSessionRepository implements private static final String DELETE_SESSIONS_BY_LAST_ACCESS_TIME_QUERY = "DELETE FROM %TABLE_NAME% " + - "WHERE LAST_ACCESS_TIME < ? - MAX_INACTIVE_INTERVAL * 1000"; + "WHERE MAX_INACTIVE_INTERVAL < (? - LAST_ACCESS_TIME) / 1000"; private static final Log logger = LogFactory .getLog(JdbcOperationsSessionRepository.class); diff --git a/spring-session/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java b/spring-session/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java index d4def0f..759df03 100644 --- a/spring-session/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java +++ b/spring-session/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java @@ -15,7 +15,6 @@ */ package org.springframework.session.jdbc.config.annotation.web.http; -import java.util.Arrays; import java.util.Map; import javax.sql.DataSource; @@ -36,8 +35,6 @@ import org.springframework.core.serializer.support.SerializingConverter; import org.springframework.core.type.AnnotationMetadata; import org.springframework.jdbc.core.JdbcOperations; import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.support.JdbcUtils; -import org.springframework.jdbc.support.MetaDataAccessException; import org.springframework.jdbc.support.lob.LobHandler; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.session.config.annotation.web.http.SpringHttpSessionConfiguration; @@ -88,19 +85,14 @@ public class JdbcHttpSessionConfiguration extends SpringHttpSessionConfiguration @Bean public JdbcOperationsSessionRepository sessionRepository( - @Qualifier("springSessionJdbcOperations") JdbcTemplate jdbcTemplate, + @Qualifier("springSessionJdbcOperations") JdbcOperations jdbcOperations, PlatformTransactionManager transactionManager) { JdbcOperationsSessionRepository sessionRepository = - new JdbcOperationsSessionRepository(jdbcTemplate, transactionManager); + new JdbcOperationsSessionRepository(jdbcOperations, transactionManager); String tableName = getTableName(); if (StringUtils.hasText(tableName)) { sessionRepository.setTableName(tableName); } - String databaseName = getDatabaseName(jdbcTemplate.getDataSource()); - if (Arrays.asList("Apache Derby", "H2").contains(databaseName)) { - sessionRepository.setDeleteSessionsByLastAccessTimeQuery("DELETE FROM " + tableName + - " WHERE LAST_ACCESS_TIME < ? - CAST(MAX_INACTIVE_INTERVAL AS BIGINT) * 1000"); - } sessionRepository .setDefaultMaxInactiveInterval(this.maxInactiveIntervalInSeconds); if (this.lobHandler != null) { @@ -163,17 +155,6 @@ public class JdbcHttpSessionConfiguration extends SpringHttpSessionConfiguration this.maxInactiveIntervalInSeconds = maxInactiveIntervalInSeconds; } - private String getDatabaseName(DataSource dataSource) { - try { - String databaseProductName = JdbcUtils.extractDatabaseMetaData(dataSource, - "getDatabaseProductName").toString(); - return JdbcUtils.commonDatabaseName(databaseProductName); - } - catch (MetaDataAccessException e) { - return null; - } - } - private String getTableName() { String systemProperty = System.getProperty("spring.session.jdbc.tableName", ""); if (StringUtils.hasText(systemProperty)) {