Я использую Spring успокоительной веб-служб в моем проекте, здесь у меня есть две категории пользователейКак переключаться между двумя базами данных, на основе запроса пользователя в веб-приложении Java?
1) среднее (Студент изучения класса от 6 до 10)
2) среди (студент, изучающий класс между 11-й и 12).
В каждом URI, мы указываем тип пользователя, например, смотри ниже: (http://localhost:8080/TestProject/login/вторичной/Authenticate)
Для запроса выше, мне нужно извлечь данные из «вторичных» d.b таблиц.
Аналогичным образом для запроса другого пользователя, необходимо связаться с другим d.b (Inter).
В классе '' DAO:
NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(
getDataSource());
jdbcTemplate.getJdbcOperations().execute(
"SET SCHEMA " + **UriUtils.getSchema()**);
В выше UriUtils.getSchema(), метод возвращает имя 'базы данных'.
private DataSource getDataSource() {
String db = UriUtils.getDataBaseName();
DataSource dataSource = null;
try {
InitialContext initialContext = new InitialContext();
Context environmentContext = (Context) initialContext
.lookup("java:comp/env");
dataSource = (DataSource) environmentContext.lookup(db);
} catch (NamingException e) {
logger.error(e.getMessage());
logger.info(db + " resource is not available in server.xml file");
e.printStackTrace();
}
return dataSource;
}
В сервере Tomcat я настроил пул соединений.
server.xml
<Resource auth="Container" driverClassName="org.postgresql.Driver"
logAbandoned="true" maxActive="20" maxIdle="10" maxWait="-1"
name="secondary" password="admin" removeAbandoned="true"
removeAbandonedTimeout="90" type="javax.sql.DataSource"
url="jdbc:postgresql://localhost:5432/postgres?currentSchema=secondary"
username="postgres" />
<Resource auth="Container" driverClassName="org.postgresql.Driver"
logAbandoned="true" maxActive="20" maxIdle="10" maxWait="-1"
name="inter" password="admin" removeAbandoned="true"
removeAbandonedTimeout="90" type="javax.sql.DataSource"
url="jdbc:postgresql://localhost:5432/postgres?currentSchema=inter"
username="postgres" />
context.xml
<ResourceLink name="secondary" global="secondary"
type="org.postgresql.Driver" />
<ResourceLink name="inter" global="inter"
type="org.postgresql.Driver" />
загружающие источника данных объекта каждый раз, когда это хорошая практика?
Просьба предложить, если имеется лучший подход.
Как правило, при использовании Spring вы будете * вводить * DataSource в свои классы DAO. В вашем случае вы должны добавить два из них, а затем выбрать, какой из них использовать при построении 'JdbcTemplate'. – Andreas