在Web.XML中读取系统属性

时间:2017-10-13 13:23:50

标签: java xml jsf jboss web.xml

为了从JBoss EAP 7服务器上的web.xml访问存储在 src / resources / settings.properties 文件中的全局值,我从类似的Stack Overflow主题实现了以下类:

public class ConfigurationWebFilter implements ServletContextListener {
        protected static final Properties properties = new Properties();

   @Override
   public void contextInitialized(final ServletContextEvent event){
        try {
            try (InputStream stream = new FileInputStream("/settings.properties")) {
                properties.load(stream);
            }

             for (String prop : properties.stringPropertyNames())
                {
                 if (System.getProperty(prop) == null)
                 {
                     System.setProperty(prop, properties.getProperty(prop));
                 }
              }
        } catch (IOException ex) {
            logger.error("Failed loading settings from configuration file for web.xml", ex);
        }
    }

}

然后我将相应的侦听器添加到web.xml:

  <listener>       
  <listener-class>
     com.product.util.ConfigurationWebFilter
  </listener-class>
  </listener>  

正确调用代码,我可以通过调试验证系统变量是否设置正确。但是,我的web.xml的属性似乎没有被替换/解释。即使在重新启动服务器和/或重新发布后,以下参数仍会评估为$ {serverName}:

<filter>
  <filter-name>CAS Authentication Filter</filter-name>
  <filter-class>(...)</filter-class>
  <init-param>
    <param-name>serverName</param-name>
    <param-value>${serverName}</param-value>
  </init-param>
</filter>

关于这个问题的所有其他主题都没有用,因为没有解决方案对我有用。如何用存储在属性文件中的值替换web.xml参数?

1 个答案:

答案 0 :(得分:0)

现在可以使用,我必须在Wildfly standalone.xml中将与变量替换相关的参数设置为true(为false)。