InfoDirectory使用手引書 |
目次 索引 |
第3部 SDK編 | > 第6章 アプリケーション開発環境(JNDI) | > 6.1 JNDIの位置付けと基本操作概要 | > 6.1.5 基本的な操作の流れ |
JNDIを使ってInfoDirectoryサーバへアクセスするためには、セションをオープンして、初期設定とユーザ認証を行う必要があります。このとき、環境プロパティの設定で設定したHashtable env変数を使用します。
セションをオープンした場合は、LDAPサーバアクセスを終了した後にセションのクローズを行う必要があります。例
DirContext ctx = new InitialDirContext(env);
【注意事項】
- 複数のセションを必要とする場合
javax.naming.directory.InitialDirContextクラスは、セションのオープンと同時に初期設定/ユーザ認証を行います。したがって、処理中にユーザ認証情報の変更などを行う場合は、新規にセションをオープンする必要があります。この場合、オープンしているセション数だけセションのクローズを行う必要があります。
また、javax.naming.ldap.InitialLdapContextクラスを利用することによって、セションのオープン中に、ユーザ認証等の変更を行うことができます。指定方法については、以下を参考にしてください。
・・・
Hashtable env = new Hashtable(5, 0.75f);
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://host:389");
env.put("java.naming.referral","follow");
// アノニマス認証でセションをオープン
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "");
env.put(Context.SECURITY_CREDENTIALS, "");
InitialLdapContext ctx = new InitialLdapContext(env,null);
・・・
// 管理者権限で再認証
ctx.addToEnvironment(Context.SECURITY_AUTHENTICATION, "simple");
ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, "cn=admin");
ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, "admin");
ctx.reconnect(null);
・・・
// セションをクローズ
ctx.close();- 最大同時接続数について
1プロセス内で保持可能なセション数は最大1024です。
1024以上を超過してセションの生成が行われた場合SSLExceptionが生成されます。
SSLException エラータイプの値(int):99、SSLエラーコード:200002
アプリケーションで以下の対応を行ってください。
- アプリケーション側では利用していないセションはクローズするようコーディングを行う
- 使用するセションを使いまわすことが可能な場合は生成するセション数を減らす
複数のセションを必要とする場合を参照してください。- プロセス数を増やしセションを振り分けることで、1プロセスあたりのセション数が1024以上を超過しないようアプリケーション側で対処する
目次 索引 |