Перемещение реквизитов конфигурации из META-INF/context.xml из веб-приложения
Я работаю с древним унаследованным веб-приложением, которое нужно подготовить к непрерывной интеграции, отделив конфигурацию ресурса от самого приложения (чтобы мы могли создать один WAR-файл, который работает в любой среде, предполагая наличие файла конфигурации в некоторых заранее определенных местах файловой системы за пределами сервер приложений).
В отличие от наших других, более современных веб-приложений, которые используют Spring
контекст, этот получает свою конфигурацию базы данных через контекст сервера приложения, и он находится в META-INF/context.xml
, который выглядит примерно так
<?xml version='1.0' encoding='utf-8'?>
<!--
Context configuration file for the Tomcat Administration Web App
-->
<Context docBase="axis2" reloadable="true" crossContext="true">
<Resource
name="jdbc/GWSDEV"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
username="myuser"
password="mypasswd"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://my.server.com/mydb"
maxActive="100"
maxIdle="30"
maxWait="10000" />
</Context>
Я хотел бы переместить эту конфигурацию куда-нибудь за пределы приложения Tomcat и перенастроить приложение для загрузки файла свойств из чего-то вроде /etc/myancientapp/datasource.props
так что я могу создать один файл WAR без встроенной конфигурации в Jenkins и развернуть одну и ту же войну в каждой среде, и мне не придется создавать отдельный файл для каждой среды, отличающейся только в этом одном файле. Тогда конфигурация будет отличаться в каждой среде, но я могу жить с фиксированным путем (/etc/myancientapp/datasource.props).
Как я могу отделить эту конфигурацию от моего приложения и заменить ее указателем на файл конфигурации, который должен быть загружен извне приложения?