sou*_*ick 17 tomcat spring-boot
在Tomcat中,有一个众所周知的配置选项可conf/context.xml用于禁用会话持久性:
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<Manager pathname="" />
Run Code Online (Sandbox Code Playgroud)
当如此处所示取消注释时,org.apache.catalina.Manager(例如org.apache.catalina.session.StandardManager)的应用实现没有pathname告诉它将会话存储到磁盘的位置,因此它不会将会话文件写入磁盘(例如,在关闭时),这是我们想要的.
换句话说,这会禁用标准Tomcat功能以通过服务器重新启动来维持会话.
如何在嵌入式Tomcat的Spring Boot中实现同样的目标?
也许可以以某种方式获取Manager对象以将属性路径名设置为null?
And*_*son 15
您可以使用a TomcatContextCustomizer来访问管理器并应用必要的配置:
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
tomcat.addContextCustomizers(new TomcatContextCustomizer() {
@Override
public void customize(Context context) {
if (context.getManager() instanceof StandardManager) {
((StandardManager) context.getManager()).setPathname("");
}
}
});
return tomcat;
}
Run Code Online (Sandbox Code Playgroud)
可以通过application.properties以下方式自定义此行为:
server.servlet.session.persistent=false # Whether to persist session data between restarts.
Run Code Online (Sandbox Code Playgroud)
Spring Boot 2.x 中默认禁用会话持久性。
| 归档时间: |
|
| 查看次数: |
6209 次 |
| 最近记录: |