web-dev-qa-db-ja.com

アプリケーションプロパティ「server.servlet.session.timeout」がSpring Bootプロジェクトで機能しない

Spring Bootのドキュメントによると、セッションタイムアウトは次のように設定して構成できます。

server.servlet.session.timeout= 300s

application.propertiesファイル。 この投稿 および Spring Bootのドキュメント でもそうです。しかし、残念ながらこれは私にはうまくいきません。

期待される結果を得るために他の構成はありますか?

9
Avijit Barua

このシナリオは私にとって新しいので、私は答えを投稿しています。そして、私は適切な解決策を段階的に得ていません。 M. Deinumの提案に従って、web.xmlフォルダの下にWEB-INFファイルを作成しました。プロジェクトの構造は

src
 |_ main
     |_ Java
     |_ resources
     |_ webapp
         |_ WEB-INF
              |_ web.xml

そしてweb.xml<session-timeout>...</session-timeout>を設定しました

私のweb.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://Java.Sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
         id="WebApp_ID" version="2.5">


    <session-config>
        <session-timeout>5</session-timeout>
    </session-config>

</web-app>

そして今私のサーバーの私のwebappのセッション時間は私の設定に従って働いています。 M. Deinumに感謝します

4
Avijit Barua

アプローチ1を使用できます。

server.servlet.session.timeout=30s
server.servlet.session.cookie.max-age=30s

それは私にとってはうまくいきます

2
vivekdubey

この問題の考えられる原因は、@EnableRedisHttpSession。これで説明したように answer

@EnableRedisHttpSessionを使用することで、Spring BootにRedisベースのHTTPセッションの構成を完全に制御するように指示しています。その結果、自動構成がバックオフし、server.servlet.session.timeoutは効果がありません。 server.servlet.session.timeoutを使用する場合は、@ EnableRedisHttpSessionを削除する必要があります。または、@ EnableRedisHttpSessionを使用する場合は、maxInactiveIntervalInSeconds属性を使用してセッションタイムアウトを構成する必要があります。

これが誰かを助けることを願っています。

1
Nelly Mincheva

HttpSessionListenerを使用します。

server.servlet.session.timeoutは埋め込みコンテナでのみ機能します。

@Configuration
public class MyHttpSessionListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent event) {
        event.getSession().setMaxInactiveInterval(30);
    }
}
0
Ali

spring doc SpringBootの最新バージョンは、次のプロパティを使用しています。

server.servlet.session.timeout=30m
0
kim se jung