We did something similar at RU though we mostly relied on JNDI where possible. Same overall idea though.
On Tue, Jan 25, 2011 at 1:16 PM, Marvin Addison <[email protected]>wrote: > > I'm looking for a bit > > of advice on how to best handle deploying different configurations to > > different systems. > > A) Maintain a single code tree, and script the heck out of everything. > > B) Use parallel code branches for each deployment target, with simpler > > scripts. > > If you're like most dev/pprd/prod environments, your configurations > only differ in hostnames and credentials. Why invest in build/deploy > complexity when you can simply factor out the > host/environment-specific data to something external to the build, > e.g. properties file on filesystem, and use a single build tree. This > strategy works exceedingly well for us where I manage 6 virtual hosts > in 3 different environments. Deployment consists of dropping a single > WAR deployable on the filesystem and a Tomcat restart to be safe. > This avoids the "which version did I just deploy" problem since the > deployable contains no environment-specific data. Additionally, it > keeps the build and deployment complexity low. > > The cornerstone of our solution is to use > > http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html > , > which allows us to factor out host and environment-specific properties > to a single properties file. Placeholders are used in the Spring > configuration, for example: > > <bean > id="dataSource" > class="com.mchange.v2.c3p0.ComboPooledDataSource" > p:driverClass="${database.driverClass}" > p:jdbcUrl="${database.url}" > p:user="${database.user}" > p:password="${database.password}" > p:initialPoolSize="${database.pool.minSize}" > p:minPoolSize="${database.pool.minSize}" > p:maxPoolSize="${database.pool.maxSize}" > p:maxIdleTimeExcessConnections="${database.pool.maxIdleTime}" > p:checkoutTimeout="${database.pool.maxWait}" > p:acquireIncrement="${database.pool.acquireIncrement}" > p:acquireRetryAttempts="${database.pool.acquireRetryAttempts}" > p:acquireRetryDelay="${database.pool.acquireRetryDelay}" > p:idleConnectionTestPeriod="${database.pool.idleConnectionTestPeriod}" > p:preferredTestQuery="${database.pool.connectionHealthQuery}" > /> > > M > > -- > You are currently subscribed to [email protected] as: > [email protected] > To unsubscribe, change settings or access archives, see > http://www.ja-sig.org/wiki/display/JSG/cas-user > > -- You are currently subscribed to [email protected] as: [email protected] To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/cas-user
