2

我正在使用以下内容:

  • 春天 3.1
  • Java EE 6 (GlassFish 3.1.2)
  • 用于项目构建等的 Maven
  • Ant 实时部署

我们有一堆工作环境:DEV、UAT、TRAINING、PROD 等。在我们的 TRAINING 环境中,已向我提出了将会话超时时间延长到 8 小时的请求。在所有其他环境中为 2 小时。我想做的只是在web.xml. 但我认为这是不可能的:

<session-config>
    <session-timeout>${session.timeout}</session-timeout>
</session-config>

我想到的解决方案是:

  1. 使用 Maven 过滤——我真的不想这样做。这将意味着一场单独的训练战。
  2. 删除会话超时web.xml并将 TRAINING 中的 GlassFish 配置为 8 小时后超时 - 我不太喜欢这样,因为我更愿意让我们所有的环境保持纯净和同步。
  3. 在一些初始化代码中手动设置它。呸。

我应该提到我们使用<env>.properties文件来配置网络应用程序。使用 VM 参数选择属性文件。

谁能想到另一个更好的解决方案?

在此先感谢,穆尔。

4

2 回答 2

0

如果你可以在一些初始化代码中设置它,那么你就可以从 spring 中获取它。web.xml 是首先读取的内容,因此无法对其进行预处理。

那么为什么不这样做创建一些“手动初始化代码”,这些代码与从 spring 加载会话超时的战争一起部署。

于 2012-07-05T09:33:16.660 回答
0

在 SO 上查看这个问题,可以有两种方法,但不确定 -

  1. 您可以为每个环境使用不同的 web.xml 文件,并使用相应的 web.xml 构建 war 文件。这是完全可能的。

  2. 您可以使用自定义HttpSessionListener,如上面的链接所示。虽然它从硬编码值设置了会话超时,但我会尝试从 servlet 访问上下文初始化参数,例如

    Session().getServletContext().getInitParameter("paramName");
    

并将为不同的环境定义具有不同会话超时值的初始化参数。我没有测试过这段代码,所以不确定你是否得到上下文参数。

于 2012-07-05T09:50:20.437 回答