在 spring-boot Web 应用程序中未考虑 web.xml 会话超时?
Posted
技术标签:
【中文标题】在 spring-boot Web 应用程序中未考虑 web.xml 会话超时?【英文标题】:web.xml session-timeout not taken into account in spring-boot web app? 【发布时间】:2018-01-30 21:03:54 【问题描述】:我有一个使用spring-boot-starter-web
构建并在tomcat8
上运行的war
webapp。
我只想增加一个应用程序的会话超时。因此添加了以下文件:
/src/main/resources/WEB-INF/web.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<session-config>
<session-timeout>600</session-timeout>
</session-config>
</web-app>
但 TTL 会话超时仍保持默认的 30 分钟。为什么?
【问题讨论】:
您需要限制吗?为什么不完全关闭它?为此将其设置为 0。 这只是一个例子。然而我需要一个明确的限制。 【参考方案1】:在标准 maven 项目中,WEB-INF 文件夹位于 src/main/webapp 而不是 src/main/resources。问题可能来自于此。
您检查打包的 war 文件以了解 web.xml 文件的位置。
您可以在此处找到示例项目结构:https://github.com/spring-projects/spring-boot/tree/v1.5.6.RELEASE/spring-boot-samples/spring-boot-sample-traditional
【讨论】:
据我所知,server.*
属性仅适用于在嵌入式 tomcat 上运行时。这就是为什么文档属性主题是明确的# EMBEDDED SERVER CONFIGURATION
。但我有一个部署到独立 tomcat 的 war 文件。
嗨,你能检查一下当你打包你的war文件时,web.xml文件是否正确打包在WEB-INF/web.xml中?因为如果是这样的话,它应该可以工作。在标准 maven 项目中,WEB-INF 文件夹位于 src/main/webapp 而不是 src/main/resources。你可以在这里看到一个标准的 spring-boot web 项目:github.com/spring-projects/spring-boot/tree/v1.5.6.RELEASE/…
好收获!将文件移动到/src/main/webapp/WEB-INF/web.xml
解决了!您能否相应地重写您的答案以便我接受?以上是关于在 spring-boot Web 应用程序中未考虑 web.xml 会话超时?的主要内容,如果未能解决你的问题,请参考以下文章
spring-boot 在单个 Web 应用程序路径上设置基本身份验证?
Heroku H14(没有运行 Web 进程)+ Spring-boot
Web视图点击:在android中未检测到url,iOS工作:本机反应