Как изменить значение MaxInactiveIntervalInSeconds в конфигурации весенней сессии java? - PullRequest
0 голосов
/ 10 марта 2020

Я реализовал весеннюю сессию весной MVC приложение. Он создает таблицы сессий в моей базе данных и хранит идентификаторы сессий. Но я не могу изменить значение MaxInactiveIntervalInSeconds. В конфигурации XML я изменил значение MaxInactiveIntervalInSeconds, как показано ниже.

<bean class="org.springframework.session.jdbc.config.annotation.web.http.JdbcHttpSessionConfiguration"> 
        <property name="maxInactiveIntervalInSeconds"> 
            <value>60</value> 
        </property> 
     </bean>

и работает нормально. Но я не могу изменить значение MaxInactiveIntervalInSeconds в конфигурации java. Я пробовал следующее.

@Bean
public JdbcHttpSessionConfiguration setMaxInactiveIntervalInSeconds(JdbcHttpSessionConfiguration jdbcHttpSessionConfiguration) {
    jdbcHttpSessionConfiguration.setMaxInactiveIntervalInSeconds(60);
    return jdbcHttpSessionConfiguration;
}

Но это не работает.

Мои классы SessionConfig и SessionInitializer, как показано ниже.

@Configuration
@EnableJdbcHttpSession
public class SessionConfig {
    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean
    public JdbcHttpSessionConfiguration setMaxInactiveIntervalInSeconds(JdbcHttpSessionConfiguration jdbcHttpSessionConfiguration) {
        jdbcHttpSessionConfiguration.setMaxInactiveIntervalInSeconds(60);
        return jdbcHttpSessionConfiguration;
    }
}

и

public class SessionInitializer extends AbstractHttpSessionApplicationInitializer {

}

Есть ли способ добиться этого?

1 Ответ

0 голосов
/ 10 марта 2020

Я нашел способ. Просто добавьте httpServletRequest.getSession().setMaxInactiveInterval(intervalInSeconds)

    @RequestMapping(value = "/login", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
    public String login(HttpServletRequest request, HttpServletResponse servletresponse){
       //Your logic to validate the login
       request.getSession().setMaxInactiveInterval(intervalInSeconds);
    }

Это сработало для меня.

РЕДАКТИРОВАТЬ 1 Найден другой способ сделать это. Это был бы правильный способ сделать это,

@EnableJdbcHttpSession(maxInactiveIntervalInSeconds = intervalInSeconds)
...