¿Cómo incluir valores del archivo .properties en web.xml?

Necesito incluir algunos valores de un file.properties en el WEB-INF/web.xml algo como esto:

 uploadDirectory myFile.properties['keyForTheValue'] 

Actualmente estoy trabajando con esto:

  • JBoss
  • JEE5

Puede agregar esta clase, que agrega todas las propiedades de su archivo a JVM. Y agrega esta clase como context-listener a 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)); } } } } 

en web.xml

    com.company.InitVariables   

ahora puedes obtener todas las propiedades en tu proyecto usando

 System.getProperty(...) 

o en web.xml

 param-name ${param-name} 

Una palabra de advertencia con respecto a la solución aceptada anteriormente.

Estaba experimentando con esto en jboss 5 hoy: el método contextInitialized() no se invoca hasta después de cargar web.xml por lo que el cambio a las propiedades del sistema no surte efecto a tiempo. Extrañamente, esto significa que si vuelve a implementar la aplicación web (sin reiniciar jboss), la propiedad sobrevivirá desde que se configuró la última vez que se implementó, por lo que puede parecer que funciona.

La solución que vamos a usar en su lugar es pasar los parámetros a jboss a través de la línea de comandos java, por ejemplo -Dparameter1=value1 -Dparameter2=value2 .