I've used a number of different app servers (Weblogic, Orion, JBoss). Each time I set a new one up, the following pattern seems to develop:

- I install a default version of the server using its installer or by unpacking its archive, and run it.

- I deploy my application (EAR file or WAR file) and find that it partially works.

- I tweak a number of configuration files provided with the appserver's installation, usually changing things like the default HTTP port, the administrator password, etc.

- Sometimes I change the startup file in order to enable debugging or add properties to the JVM.

I end up with what I want, but inevitably, a new version of the appserver is released a week later and now I'm stuck. Do I just update the server's JAR files and hope there were no major config changes? Do I overwrite everything and try to recreate all my original changes from scratch? Do I keep the changed files and replace everything else?

My goal would be to put everything I need to customize into my EAR file and not have to change any of the appserver's defaults, but this doesn't seem possible.

At one job I had, the server's configuration had been so thoroughly customized that the only way to set up a new installation was to copy someone's working directory. Installing the server product from scratch and trying to get it to work with our application was next to impossible. Upgrading to a newer version of the server was a project that took a developer several weeks to complete. It was a real mess.

I'm very interested in hearing how other developers cope with this issue.

It occurs to me that the average desktop application comes with an installer that preserves user preferences from the previous version if they exist; why can't appservers do the same?