2

私は JNDI を理解しようとしていますが、物事の根底に到達できません。私が理解していることから、JNDIは、いくつかの構成に基づいてファイルシステムからオブジェクトを取得できるようにするインターフェースです。

inまたは as inDataSourceでパラメータが定義されている場合の例を主に見ました。それよりも、Java アプリは、リソース定義で指定された名前を介して、このオブジェクト インスタンスを取得できます。web.xml<Resource>TomcatDataSourceinitialContext

しかし、私が理解したいのは、バックグラウンドで何が起こっているのですか? JVMそのようなリソースを検索する場所をどうやって知るのでしょうか? たとえば、Tomcat で定義されている場合、何らかの方法でそれらをエクスポートすると思います。しかし、JVMTomcat にそれらを要求する必要があることをどうやって知るのでしょうか? さらに、DataSourceリソース定義 (接続文字列など) から設定されたパラメーターを使用して、JNDI ルックアップから実際のオブジェクトを取得できます...どのコンポーネントがそれらを設定しますか? Tomcat? JVM? 私はとても混乱しています...

4

1 に答える 1

1

Java コードで JNDI リソース ルックアップを使用すると、アプリケーションは、SMTP サーバーのアドレスやデータベースのユーザー名/パスワードなどの構成の詳細を認識できなくなります。代わりに、各リソースの名前を決定します。これは、アプリケーションをデプロイする人が適切に構成する必要があります。この環境固有の設定の分離により、アプリケーションの移植性が向上します。これは一般的には良いことです。

Tomcat の JNDI リソースは、さまざまな XML ファイル (server.xml、web.xml、context.xml) で構成されます。詳細については、Tomcat のドキュメントを参照してください: http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources -howto.html . Tomcat サーバーは、JNDI ルックアップを実行するときに、これらのファイルを読み取り、構成されたオブジェクトをアプリケーションに提供することを認識しています。

于 2013-01-25T22:30:46.590 に答える