JNDIの整理
JNDI は、Java Naming and Directory Interface API の略語です。API を呼び出すことにより、アプリケーションはリソースとほかのプログラムオブジェクトを検出します。リソースとは、データベースサーバーやメッセージングシステムなどのシステムへの接続を提供するプログラムオブジェクトです。JDBC リソースはデータソースと呼ばれる場合もあります。
JNDIは単純に実行環境上で参照できないオブジェクトを参照・実行できるAPI
単純にオブジェクトを参照・実行することもできるし、データベースなどへの接続リソースを参照・実行することができる
例えばTomcatやWebLogicなどのAppサーバでコネクションプールを張りながらDBに接続するときとかはJNDIを利用することが多いと思う
コネクションを保持するオブジェクトをAppサーバ側で管理しており、そのオブジェクトは内部的にはJDBCでDBに接続している
アプリ側からDBに接続するときはJNDI経由で、AppサーバのDB接続オブジェクトを介してDBにアクセスすることで、外部リソースへの詳しい接続の仕方とかはAppサーバ側に逃がせるイメージだと思う
JNDI APIを介してオブジェクトを呼び出す際の通信プロトコルは色々選択肢がある (RMI, LDAP, etc)
混乱しがちだと思うが、JNDIはプロトコルではない。あくまでオブジェクトを参照するためのAPI。
この図では表されていないが、もちろんJNDIをかいして接続する先には要求に応じてオブジェクトを返すサーバ(ネーミングサービス)が必要