views:

156

answers:

1

Hi,

I would like to control the settings in web.xml and using different once for different environments.

Is it possible to use a property, from a property file on classpath, in web.xml? Something like this:

 <context-param>
  <param-name>myparam</param-name>
  <param-value>classpath:mypropertyfile.properties['myproperty']</param-value>
 </context-param>

Best regards

P

+2  A: 

AFAIK context-param and env-entry both hold static values. You will not get the runtime (dynamic) value from the property file. It will be like:

<context-param>     
  <param-name>myparam</param-name>     
  <param-value>myactualpropertyvalue</param-value>     
 </context-param>

Any change to the value needs a redeployment of the web app.

In your example, the value you retrieve would be the String classpath:mypropertyfile.properties['myproperty']

If you use Glassfish you can update it on the fly from commandline http://javahowto.blogspot.com/2010/04/glassfish-set-web-env-entry.html

If I understand your requirement is at build time (i.e different war for different env) and not during running time?

You could replace the values in web.xml as part of the ant/maven build process.

JoseK
Thanks for your response. However, it is at startup time that I would like to look for the property. I.e. the same war should have different properties for different env. I am not sure if it is possible at all to do this.At the moment I am doing almost like you suggest, I am replacing the value during a Maven build.
Pich