「javax.naming.Context」通常在Java EE開發中使用。通過在context.xml中使用給定名稱的資源調用其查找函數,使用它建立動態數據庫連接非常方便。示例代碼如下所示,其中「db_name」是用於標識數據庫資源的名稱。Java:同一個servlet中的多個數據資源
Context ctx = new InitialContext();
DataSource ds = ctx.lookup("java:comp/env/jdbc/db_name");
我擔心的是通過使用不同的上下文使用相同的上下文和查找資源,查找資源之間有什麼區別。哪種方法更有意義或合適?假設所有的數據庫資源都是在同一個context.xml文件中定義的。例如:
Context ctx = new InitialContext();
DataSource ds1 = ctx.lookup("java:comp/env/jdbc/db_name_ds1");
DataSource ds2 = ctx.lookup("java:comp/env/jdbc/db_name_ds2");
和
Context ctx_ds1 = new InitialContext();
Context ctx_ds2 = new InitialContext();
DataSource ds1 = ctx_ds1.lookup("java:comp/env/jdbc/db_name_ds1");
DataSource ds2 = ctx_ds2.lookup("java:comp/env/jdbc/db_name_ds2");
謝謝你的分享。
在這種情況下,我認爲它們是等價的。 'Context#lookup(String)'方法可以返回任何對象(取決於用於處理請求的資源的工廠),甚至可以返回另一個上下文。 – 2013-03-28 03:42:05
再次感謝SD。我不確定你提到的「甚至另一種情況」,你可以進一步詳細說明一下嗎? – ShadowScorpion 2013-03-28 03:50:33
上下文可以包含另一個上下文。所以你可以使用'lookup()'方法返回一個子上下文。 – 2013-03-28 12:36:19