Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Spring引导和嵌入式Tomcat启用会话持久性_Java_Spring_Spring Mvc_Tomcat_Spring Boot - Fatal编程技术网

Java 使用Spring引导和嵌入式Tomcat启用会话持久性

Java 使用Spring引导和嵌入式Tomcat启用会话持久性,java,spring,spring-mvc,tomcat,spring-boot,Java,Spring,Spring Mvc,Tomcat,Spring Boot,通过在Eclipse中使用嵌入式Tomcat启动应用程序类,我正在开发一个具有Spring引导和Spring安全性的应用程序。每次我重新启动服务器,我的会话就会消失,我必须再次登录,这变得很烦人 是否可以在服务器重新启动之间持久化会话 我在Stackoverflow上看到另一个问题,有人问了相反的问题,这让我觉得这应该是开箱即用的: 我正在用Gradle运行Spring Boot 1.2.1 顺便说一句,我知道Spring-Loaded,但有时服务器重启是不可避免的。我自己才发现这一点。每次启

通过在Eclipse中使用嵌入式Tomcat启动应用程序类,我正在开发一个具有Spring引导和Spring安全性的应用程序。每次我重新启动服务器,我的会话就会消失,我必须再次登录,这变得很烦人

是否可以在服务器重新启动之间持久化会话

我在Stackoverflow上看到另一个问题,有人问了相反的问题,这让我觉得这应该是开箱即用的:

我正在用Gradle运行Spring Boot 1.2.1


顺便说一句,我知道Spring-Loaded,但有时服务器重启是不可避免的。

我自己才发现这一点。每次启动应用程序时,Spring都会在
/tmp
中为Tomcat的基本目录生成一个新的随机临时目录(例如
/tmp/Tomcat.5990562997404648887.8080
)。由于每次启动时使用不同的文件夹,Tomcat无法恢复会话


这可以通过使用
server.tomcat.basedir=/tmp
设置您自己的基本目录来解决。但是,我不认为这是一个修复,因为它需要设置一个操作系统特定的目录,所以我打开了一个关于这个问题的bug:

< P>根据Spring,这将被固定在<强> 1.3.0. M2<强>中,并且最终在<强> 1.3.0版本< <强> > /P> 然后,您所要做的就是将以下行添加到
应用程序.properties
文件中

server.session.persistent=true
在最近的Spring版本中,这已被弃用,取而代之的是:

server.servlet.session.persistent=true
参考文献

更新Tomcat、Jetty和Undertow,以便在 应用程序停止并在应用程序运行时再次加载 重新启动

持续会话是选择加入;通过设置
persistentSession
在ConfigurableMbeddedServletContainer上或通过使用属性
server.session.persistent=true

生长激素-2490


我通过使用Redis保存会话信息解决了这个问题

您只需在application.yml文件中指定几个选项:

server:
  servlet:
    session:
      persistent: true
spring:
  session:
    store-type: redis
  redis:
    host: localhost
    port: 6379
 ...
格雷德尔先生

    plugins {
       id 'java'
       id 'io.spring.dependency-management' version '1.0.6.RELEASE'
       id 'org.springframework.boot' version '2.1.3.RELEASE'
   }
    ...
    // Spring Framework
    compile(
            'org.springframework.boot:spring-boot-starter-web',
            'org.springframework.boot:spring-boot-starter-data-jpa',
            'org.springframework.data:spring-data-redis',
            'org.springframework.boot:spring-boot-starter-security'
    )
    ...

与Spring Boot 2.1.3完美配合使用

您是否检查了这些帖子:&?还请确保您在会话中输入的所有内容都是可序列化的。是的,这一点现在已修复-还值得一提的是,devtools默认启用此标志。我有此功能,并且在服务器重新启动后仍会丢失Spring身份验证:(如果启用了spring安全性,请确保放入SecurityContext的任何自定义对象都是可序列化的,否则spring安全性会认为还原的会话无效。您好,为什么需要jpa?@Tama用于会话持久性,您不需要,它是我项目中的一个示例文件。我需要它来支持数据库。