We have a large web-based application which is developed as a product, but which we deliver to many customers simultaneously and are unsure how to manage customer configurations.
When I say configurations, I mean different graphics on the pages, maybe different JSPs, sometimes different configuration files.
On our thick client applications this was just a matter of placing customer overrides earlier on the classpath than the product resources, thus allowing us to leave the JRE to handle it for us.
However, in a web environment, JSPs are not loaded off the classpath. We have our development environment setup to develop in an exploded web application, classes are compiled to WEB-INF/classes and all JSPs are edited in-place, and we point the Context in Tomcat to the local directory. This is an environment which works well and so we don't want to lose it.
The most obvious fix would be to have a customer override directory which the build uses as an override when building the WAR, but this adds overhead to our development environment. The only other solution we have had is to modify the components in the Context in Tomcat to allow an override area to be specified (I have successfully written drop in extensions of the StandardContext & FileDirContext, which do work), but this doesn't seem to be a very elegant solution.
Does anyone else have a possible solution to what must be a very common problem?