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:
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
.
Utilice la tarea replacetoken de Ant. https://blogs.oracle.com/rajeshthekkadath/entry/automation_using_ant_replace_function