Spring Bootのドキュメントによると、セッションタイムアウトは次のように設定して構成できます。
server.servlet.session.timeout= 300s
application.properties
ファイル。 この投稿 および Spring Bootのドキュメント でもそうです。しかし、残念ながらこれは私にはうまくいきません。
期待される結果を得るために他の構成はありますか?
このシナリオは私にとって新しいので、私は答えを投稿しています。そして、私は適切な解決策を段階的に得ていません。 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
に感謝します
アプローチ1を使用できます。
server.servlet.session.timeout=30s
server.servlet.session.cookie.max-age=30s
それは私にとってはうまくいきます
この問題の考えられる原因は、@EnableRedisHttpSession
。これで説明したように answer :
@EnableRedisHttpSessionを使用することで、Spring BootにRedisベースのHTTPセッションの構成を完全に制御するように指示しています。その結果、自動構成がバックオフし、server.servlet.session.timeoutは効果がありません。 server.servlet.session.timeoutを使用する場合は、@ EnableRedisHttpSessionを削除する必要があります。または、@ EnableRedisHttpSessionを使用する場合は、maxInactiveIntervalInSeconds属性を使用してセッションタイムアウトを構成する必要があります。
これが誰かを助けることを願っています。
HttpSessionListener
を使用します。
server.servlet.session.timeout
は埋め込みコンテナでのみ機能します。
@Configuration
public class MyHttpSessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent event) {
event.getSession().setMaxInactiveInterval(30);
}
}
spring doc SpringBootの最新バージョンは、次のプロパティを使用しています。
server.servlet.session.timeout=30m