The way I configure all my apps right now is
-configurable objects take a Configurable interface in constructor; this has a few getProperty methods and a getSubConfiguration(String name) method that returns a sub config -this is mapped to an XML config file, though I could swap it for JNDI or something in future -I have a different XML file for every host, driven off hostname -when my app starts, it gets its hostname and pulls in the config file. this lets me get away with tunable configs for different boxes from a single WAR file. The JNDI option will let me move to a clustered approach as and when necessary.
