Search code examples
jakarta-eejbossweb.xmljava-ee-5

How to include values from .properties file into web.xml?


I need to include some values from a file.properties into the WEB-INF/web.xml something like this:

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

I'm currently working with this:

  • JBoss
  • JEE5

Solution

  • You can add this class, that add all properties from your file to JVM. And add this class like context-listener to 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));
             }
          }
       }
    }  
    

    in web.xml

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

    now you can get all properties in you project using

    System.getProperty(...)
    

    or in web.xml

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