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 サーバーがリモートの場合、2 つの異なるネットワーク接続を作成し、それらを管理する責任を負うことになります。

于 2013-03-28T04:01:06.803 に答える