我正在開發一個java servlet web應用程序,它管理來自多個數據庫(所有結構相同)的信息,每個數據庫對應不同的「業務」。用戶選擇存儲在會話中的「當前業務」,並且應用可以顯示或修改「當前業務」。一個servlet上下文的多個動態數據源
我想動態地使用tomcat資源來使用jndi訪問這些業務。通過這種方式,我可以在servlet中使用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);
線在那裏我能得到正確的數據源爲「當前商業」。
我已經嘗試編寫自己的從javax.naming.spi.ObjectFactory派生的ObjectFactor而沒有成功。任何關於如何輕鬆做到這一點的指針?
您將如何通過JNDI接口訪問它? – rmarimon 2009-05-31 20:45:20
你不能這樣做。也許在同一個監聽器中,你可以使用context.bind(name,object)? – 2009-05-31 21:16:43