首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在web.xml中外部化上下文参数值

如何在web.xml中外部化上下文参数值
EN

Stack Overflow用户
提问于 2019-05-10 22:06:11
回答 1查看 976关注 0票数 2

我正在尝试将一些遗留的(基于struts2的) web应用程序从Jboss迁移到Open-Liberty服务器,我想知道是否有一种方法可以外部化来自web.xml的上下文参数(或过滤初始参数)的值,就像使用server.xml中的${}语法或使用eclipse microprofile的mpConfig特性一样。在最初的项目中,参数值是在构建时使用占位符替换注入到web.xml中的,但是,根据12因素3推荐,我更喜欢在软件之外设置这个值,例如在环境变量中。在我的特定情况下,我需要使用依赖于环境的参数值配置一个servlet过滤器和一个自定义标记库。

我已经尝试在web.xml中使用${}语法,但没有成功:

代码语言:javascript
复制
...
  <context-param>
    <param-name>remincl.resource.provider</param-name>
    <param-value>${remincl.resource.provider}</param-value>
  </context-param>
...

上下文参数的运行时值是:"${remincl.resource.provider}“,而不是存储在环境变量中的实际值。

我认为JEE规范不允许这种行为,但我想知道开放自由是否提供了一些额外的功能来解决这个问题。否则,我必须在构建时继续注入值(或者更改filter和taglib的配置策略)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-10 23:00:54

实现这一点的JavaEE标准方法是使用javax.servlet.ServletContextListener

例如:

代码语言:javascript
复制
@WebListener
public class MyServletContextListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent event) {
        // Get the context value from wherever is most convenient:
        // System.getProperty(), System.getenv(), MP Config API, etc
        String value = System.getProperty("remincl.resource.provider");
        event.getServletContext().setInitParameter("remincl.resource.provider", value);
    }

    @Override
    public void contextDestroyed(ServletContextEvent event) {}

}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56079318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档