JNDIは、アクセスディレクトリへのAPIです。アプリケーションサーバーには、アプリケーション、データソース、およびEJB Beanの情報を保持するためのディレクトリが含まれています。 JNDIを使用すると、他のタイプのディレクトリにアクセスすることができます。たとえば、Active DirectoyおよびLDAPディレクトリサーバーのユーザー情報にアクセスするために使用できます。
これらのJNDIディレクトリにアクセスし、コンフィグレーションデータやRMIリモート参照などのデータを取得してEJB Beanを呼び出すクライアントプログラムを作成できます。
を使用すると、クライアントプログラムを作成している場合、あなたはdefine an InitialContext
あなたのプログラムが使用するJNDIディレクトリを記述することができ、リモートJNDIディレクトリに
にアクセスします。コンフィグレーションでHashtable
を定義し、Context.PROVIDER_URL
を定義し、InitialContext
を作成する必要があります。
たとえば、access information in an LDAP directoryというプログラムを作成できます。
使用するライブラリによっては、JNDIリモートホストを記述する構成ファイルを定義できます。たとえば、JBoss EJB Client libraryの場合はjboss-ejb-client.properties
というファイルを定義できます。グラスフィッシュはjndi.properties
fileを使用します。
アクセスリモートリソース
リソースプログラムは、プログラムコードの位置とは無関係にアクセスする必要があること(例えば、画像、オーディオ、またはテキスト)データです。 JNDI APIまたは@Resource
annotationを使用して情報にアクセスできます。
たとえば、APIを使用してLDAPディレクトリ内のユーザーのデータを要求できます。リモートEJB
あなたはaccess EJBs with remote interfaces located in other VMsをすることができますへのアクセス
try {
// Create the initial directory context
DirContext ctx = new InitialDirContext(env);
// Ask for all attributes of the object
Attributes attrs = ctx.getAttributes("cn=Ted Geisel, ou=People");
// Find the surname attribute ("sn") and print it
System.out.println("sn: " + attrs.get("sn").get());
} catch (NamingException e) {
System.err.println("Problem getting attribute:" + e);
}
。一方では、CORBAスタイルのリモートインタフェースを使用してEJBを作成し、サーバのjava:
名前空間にEJBを登録する必要があります。一方、アプリケーションはcorbaname
URLを使用してこれらのBeanにアクセスできます。あなたがEJBを定義する場合は、WebSphere /リバティで
は、にバインド: java:global/ExampleApp/ExampleModule/ExampleBean!com.ibm.example.ExampleRemoteInterface
java:app/ExampleModule/ExampleBean!com.ibm.example.ExampleRemoteInterface
java:module/ExampleBean!com.ibm.example.ExampleRemoteInterface
あなたはこれらの
corbaname::test.ibm.com:2809#ejb/global/ExampleApp/ExampleModule/ExampleHomeBean!com.ibm.example.ExampleEJBHome
corbaname:rir:#ejb/global/ExampleApp/ExampleModule/ExampleHomeBean!com.ibm.example.ExampleEJBHome
詳細な構成を(メソッドを呼び出すために)RMI-IIOPを使用してリモートEJBにアクセスすることができますリモートEJBはアプリケーションサーバーごとに異なる場合があります。 Glassfishを使用している場合は、documentationを確認できます。 example in the Oracle blogsがあります。
クラスタを構成する場合は、クラスタ内のノードの名前を使用するその他の多くのファイルがあります(options to access the remote resources)。サーバーで定義された
データソースは、リモートでアクセスすることができないリモートデータソースにアクセス
。 JNDIディレクトリにデータソースの設定を保持する場合は、解決方法はcustom class that implements the DataSource
interfaceと定義できます。クライアントは、サーバーからデータソース構成を取得し、その接続を使用してローカルデータベース接続を作成できます。