我正在使用以下内容:
我们有很多工作环境:DEV,UAT,TRAINING,PROD等。在我们的TRAINING环境中,我已经请求将会话超时提升到8小时。在所有其他环境中,它是2小时。我喜欢做的只是在web.xml
中使用属性占位符。但我不认为这是可能的:
<session-config>
<session-timeout>${session.timeout}</session-timeout>
</session-config>
我想到的解决方案是:
web.xml
删除会话超时,并在8小时后将TRAINING中的GlassFish配置为超时 - 我不太喜欢这个,因为我宁愿保持所有环境纯净且同步。我应该提一下,我们使用<env>.properties
个文件来配置网络应用。使用VM参数选择属性文件。
有人能想到另一种更好的解决方案吗?
提前致谢, 道穆埃尔。
答案 0 :(得分:0)
如果你可以在一些初始化代码中设置它,那么你就可以从spring获取它。 web.xml是第一个被读取的内容,因此无法对其进行预处理。
那么为什么不这样做呢?创建一些“手动初始化代码”,它与从春天加载会话超时的战争一起部署。
答案 1 :(得分:0)
在SO上查看此question,可以有两种方法但不确定 -
您可以为每个环境创建不同的web.xml文件,并使用相应的web.xml构建war文件。这是完全可能的。
您可以使用自定义HttpSessionListener
,如上面的链接所示。虽然它有从硬编码值设置的会话超时,但我会尝试从servlet访问上下文初始化参数,如
Session().getServletContext().getInitParameter("paramName");
并将为不同的环境定义具有不同会话超时值的init参数。我没有测试过这段代码,所以不确定你是否得到了上下文参数。