Interstage Application Server Smart Repository運用ガイド |
目次
索引
![]() ![]() |
第7章 アプリケーションの作成(JNDI) | > 7.1 JNDIの使用方法 |
JNDIを使用してアプリケーションを開発する際には、以下の注意が必要です。
コンパイル、およびアプリケーションが動作するために必要な環境変数を設定してください。
SSLを使用する場合、CLASSPATH に以下のJava Archive(jar)ファイルを設定します。
JAVA_HOME は、インストール時に、以下の値が自動的に設定されています。
PATH に以下のディレクトリを設定します。
SSLを使用する場合、CLASSPATH に以下のJava Archive(jar)ファイルを設定します。
JAVA_HOMEに以下のディレクトリを設定します。
LD_LIBRARY_PATH に以下のディレクトリを設定します。
作成した.classファイルを実行する際には、作成した.classファイルの格納先のパスをCLASSPATHに設定してください。
以下の場合、InitialDirContextのclose()メソッドを実行しても即時UNBINDは送出されません。
この場合、以下のタイミングでコネクションが破棄されるまで、クライアントおよびサーバ間でコネクションが累積します。以下のタイミングでは実際にはUNBINDではなくDISCONNECTが送出されます。
サーブレットでJNDIを動作させる場合や、コネクションの生成/破棄を繰り返すプログラムでは、Smart Repositoryサーバにつながらないといった問題を引き起こす可能性があります。
コネクションが累積しないようにするためには、以下のどちらかの方法で検索結果をクリアし、確実にUNBINDが送出されるようにしてください。
DirContext ctx = new InitialDirContext(env); NamingEnumeration results = ctx.search("dc=com", "cn=User001", constraints); while (results != null && results.hasMore()){ SearchResult sr = (SearchResult)results.next(); } |
DirContext ctx = new InitialDirContext(env); NamingEnumeration results = ctx.search("dc=com", "cn=User001", constraints); results.close(); |
DNに、記号を指定する場合、以下の記号は特殊文字として扱われます。
特殊文字を指定するには、その特殊文字の前に「\」(エンマーク)を置いてエスケープするか、または「"」(ダブル引用符)で囲む必要があります。
エスケープが必要な特殊文字を含むDNを指定する場合の例を以下に示します。
cn=a\b,o=Fujitsu, Inc.,c=jp
LDAP、JNDI、Java言語それぞれで、「\」(エンマーク(バックスラッシュ))文字を特殊文字と扱います。いくつか例を示します。
「\」を含むcn属性を指定するとします。
a\b
LDAPの規約により「\」をエスケープする必要があります。
cn=a\\b
JNDIの仕様により、この名前を指定するために、それぞれの「\」をエスケープする必要があります。
cn=a\\\\b
Java言語の仕様により、この名前を文字列リテラルとして指定するために、それぞれの「\」をエスケープする必要があります。
String name1 = "cn=a\\\\\\\\b";
同様に、「,」(カンマ)、「"」(ダブル引用符)の場合はそれぞれ次のようになります。
String name2 = "cn=a\\\\,b"; String name3 = "cn=a\\\\\"b";
最初の例をJNDIで使用する場合は、次のように記述します。
String name = "cn=a\\\\\\\\b,o=Fujitsu\\\\, Inc.,c=jp";
DNおよび属性値に日本語を含む文字列を指定することができます。エスケープやコード変換は不要です。
目次
索引
![]() ![]() |