Я разрабатываю веб-приложение Java сервлета, которое управляет информацией из нескольких баз данных (все структурно одинаковые), каждый из которых соответствует другому «бизнесу». Пользователь выбирает «текущий бизнес», который хранится в сеансе, и приложение может отображать или изменять этот «текущий бизнес».Несколько динамических источников данных для контекста сервлета
Я хотел бы использовать ресурсы tomcat в динамическом режиме для доступа к этим предприятиям с помощью jndi. Таким образом, я могу использовать теги jstl sql или контекстные запросы в сервлетах. Я не могу определить каждый ресурс в файле web.xml, потому что он хранится в таблице SQL. Конечным результатом является то, чтобы иметь возможность написать простой JSP, который имеет такие строки:
<%@ taglib uri="http://java.sun.com/jstl/sql" prefix="sql" %>
<sql:query var = "users" dataSource="sources/${sessionScope.currentBusiness}">
select id, firstName, lastName FROM user
</sql:query>
или сервлеты, которые могут иметь такие строки
String request.getSession().getAttribute("currentBusiness");
Context initial = new InitialContext();
Context context = (Context) initial.lookup("java:comp/env");
DataSource source = (DataSource) context.lookup("sources/" + currentBusiness);
, где я могу получить правильный источник данных для «тока бизнес".
Я экспериментировал с написанием своих собственных ObjectFactories, полученных из javax.naming.spi.ObjectFactory, без успеха. Любые указатели на то, как легко это сделать?
Как вы могли бы получить к нему доступ через интерфейс JNDI? – rmarimon
Вы не сможете этого сделать. Возможно, в том же слушателе вы можете использовать context.bind (name, object)? –
Пробовал это, но контекст, который создает tomcat, доступен только для чтения. – rmarimon