如何包含值在的.properties文件到web.xml中?(How to include valu

2019-06-17 20:47发布

我需要包括从一些值file.propertiesWEB-INF/web.xml是这样的:

<param-name>uploadDirectory</param-name>
<param-value>myFile.properties['keyForTheValue']</param-value>

我目前有这方面的工作:

  • JBoss的
  • JEE5

Answer 1:

您可以添加这个类,从文件到JVM添加的所有属性。 而添加这类像上下文监听器web.xml

public class InitVariables implements ServletContextListener
{

   @Override
   public void contextDestroyed(final ServletContextEvent event)
   {
   }

   @Override
   public void contextInitialized(final ServletContextEvent event)
   {
      final String props = "/file.properties";
      final Properties propsFromFile = new Properties();
      try
      {
         propsFromFile.load(getClass().getResourceAsStream(props));
      }
      catch (final IOException e)
      {
          // can't get resource
      }
      for (String prop : propsFromFile.stringPropertyNames())
      {
         if (System.getProperty(prop) == null)
         {
             System.setProperty(prop, propsFromFile.getProperty(prop));
         }
      }
   }
}  

在web.xml

   <listener>       
      <listener-class>
         com.company.InitVariables
      </listener-class>
   </listener>  

现在在你的项目中使用,你可以得到所有属性

System.getProperty(...)

或者在web.xml

<param-name>param-name</param-name>
<param-value>${param-name}</param-value>


Answer 2:

谨慎的关于上述所接受的溶液A字。

我用这个在JBoss今天5试验:在contextInitialized()方法不会被调用后,直到web.xml被加载,从而使更改系统属性不参与的时间效应。 奇怪的是,这意味着,如果你重新部署web应用程序(无需重新启动的JBoss)的属性将被设置部署最后一次生存,因此可能会出现工作。

那我们要改为使用的解决方案是通过参数通过java命令行如到JBoss -Dparameter1=value1 -Dparameter2=value2



Answer 3:

使用Ant replacetoken任务。 https://blogs.oracle.com/rajeshthekkadath/entry/automation_using_ant_replace_function



文章来源: How to include values from .properties file into web.xml?