私は、それぞれが異なる「ビジネス」に対応する複数のデータベース (すべて構造的に同じ) からの情報を管理する Java サーブレット Web アプリケーションを開発しています。ユーザーはセッションに保存されている「現在のビジネス」を選択し、アプリケーションはその「現在のビジネス」を表示または変更できます。
jndi を使用してこれらのビジネスにアクセスできるように、Tomcat リソースを動的な方法で使用したいと考えています。このようにして、サーブレットで jstl sql タグまたはコンテキスト ルックアップを使用できます。リソースは SQL テーブルに格納されているため、web.xml ファイルで各リソースを定義することはできません。最終結果は、次のような行を持つ単純な 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);
「現在のビジネス」の正しいデータソースを取得できます。
javax.naming.spi.ObjectFactory から派生した独自の ObjectFactory を作成してみましたが、成功しませんでした。これを簡単に行う方法についての指針はありますか?