0

“javax.naming.Context”在 Java EE 开发中常用。通过在 context.xml 中使用给定的资源名称调用其查找函数,使用它来建立动态数据库连接非常方便。示例代码如下所示,其中“db_name”是您用来标识数据库资源的名称。

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");

感谢您的分享。

4

1 回答 1

0

除了您创建了一个不必要的额外 java 对象外,没有任何区别。但是,如果 jndi 服务器是远程的,您将创建两个不同的网络连接并且无需管理它们——这绝对不是一个人应该做的。

于 2013-03-28T04:01:06.803 回答