在 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

iOS 电子邮件中未显示 Web 安全字体

Web视图点击:在android中未检测到url,iOS工作:本机反应

使用 web.xml 配置 spring-boot 应用程序

Web 应用程序中未收到 Firebase 云消息传递通知