Tip #1: Watch Out for Parameterizing
A common tactic many J2EE developers use for addressing configuration issues involves parameters. This may seem practical at first, but you eventually see why it is wrong. When developers are asked to take a working application and parameterize properties and values in files, it means that if a developer has coded a particular property in a file for a log file location with a value of C:\appsdev\efoobar\comm.log, then the developer will create a parameterized version of the same file, where the value has a parameter such as @[email protected]. The strategy then is to replace the parameter with values meaningful to the different target runtime environments; for example, C:\appsqa\efoobar\comm.log for a test server and C:\appsprod\efoobar\comm.log for a production server.
The reason that parameterizing lots of files is popular is that Ant Copy and Replace tasks have a nifty search-and-replace capability for tokens of this type, and it is tempting to make use of this tool in hand. However, additional labor is required to do the parameterization, and it is a risky manual process to eyeball and parameterize every relevant runtime value in a set of files. If one of these values is missed, the error would not be caught until runtime, after the EAR or WAR files have been built and deployed. I have found that at larger J2EE development sites, values that should be parameterized will inevitably occasionally get overlooked, causing a production "down" problemall because of a small parameter. Your customers will not understand, and see the application as unstable.
In this case, the burden for developers is not trivialyou must now keep track not only of which properties need to be changed for each environment, but also which properties in which files have been parameterized. While there are situations where it may be necessary to go this route, parameterizing property values should be minimized and used for as small a subset of files and parameters as possible. In short, starting out parameterizing everything in sight is a common mistake to watch out for.