“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