Как я могу сохранить простые пользовательские настройки в Tomcat - PullRequest
2 голосов
/ 02 апреля 2012

Я запускаю веб-приложение Tomcat 7 в 2 местах; в одном месте находится база данных MySQL, в другом - SQL-сервер. В файле context.xml веб-приложения я определил два <Resources>, которые содержат информацию о соединении с базой данных для обеих баз данных. Поскольку я все еще разрабатываю, я иногда запускаю приложение с MySQL-сервером (дома), а иногда с SQL-сервером (на работе).

До сих пор я каждый раз перекомпилировал код для подключения либо к MySQL, либо к SQL-серверу, изменив строку изменения

//connect to MySQL
DataSource ds = (DataSource) env.lookup( "jdbc/mysql" );

в

//connect to SQL-Server
DataSource ds = (DataSource) env.lookup( "jdbc/sqlserver" );

Существует ли простой (r) способ сообщить веб-приложению, в каком месте я нахожусь, например, с настройкой в ​​файле XML, чтобы веб-приложение знало, к какой базе данных оно должно подключаться?

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

Сделайте имя JNDI внешним параметром конфигурации, который вы извлекаете как значение файла свойств или как аргумент виртуальной машины, или, возможно, как значение переменной среды.

например. в качестве файла свойств config.properties, который вы поместили в classpath :

db.jndi.name=jdbc/mysql

который вы получаете следующим образом:

Properties properties = new Properties();
properties.load(input);
String dbJndiName = properties.getProperty("db.jndi.name");

Или как аргумент виртуальной машины, который вы указываете в скрипте запуска сервера:

-Ddb.jndi.name=jdbc/mysql

который вы получаете следующим образом:

String dbJndiName = System.getProperty("db.jndi.name");
1 голос
/ 02 апреля 2012

В определении контекста для вашего приложения определите только один источник данных с всегда одинаковым именем.Измените определение источника данных в зависимости от вашего местоположения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...