質問: 以下サイトを参考にLDAP接続のロジックを組もうとしています。 参考サイト 上記サイトではプールの設定を以下のように記載しております。 ``` env.put(“com.sun.jndi.ldap.connect.pool”, “true”); env.put(“com.sun.jndi.connect.pool.timeout”, “300000”); ``` ただ、oracleを見ると以下のように記載があります。 > > env.put("com.sun.jndi.ldap.connect.pool","true"); > > LDAPプロバイダに、初期コンテキストの作成時にプールされた接続を使用するように指示します。 > > ~中略~ > > env.put("com.sun.jndi.ldap.connect.timeout", "500");を指定すると、0.5秒以内に接続を確立できない場合、LDAPサービス・プロバイダは接続試行を中止します。 > > > コネクションタイムアウトのプロパティの名前が異なっていますが、どちらでも問題なく動作するのでしょうか? もしくはどちらかが旧バージョンとかで、どちらかが最新なのでしょうか。 また、もう1点教えて頂きたいのですが、プールはデフォルトではfalseでしょうか、trueにせずにタイムアウトのみ設定しても何の意味もなくTCPなどのネットワーク・プロトコルのタイム・アウト値が使用されるのでしょうか。
回答: 専門ではないので、ご提示されていたリンク等を読んで見た上での回答となりますが ご参考程度におさめていただければと。 リンクされている参考サイトの方では`com.sun.jndi.ldap.connect.pool.time`も `com.sun.jndi.ldap.connect.time`もどちらも使用しているので別物扱いかと思います。 (抜粋されたコードの上の部分にありました。) また、oracleのdocsの15.4.2に記載がありますが、 > > com.sun.jndi.ldap.connect.timeout環境プロパティは、LDAP接続を確立するためのタイム・アウト期間を指定するために使用されます。このプロパティは、LDAPサーバーへの接続を開始する場合にはTCPタイム・アウトに影響します。接続プールが要求されている場合、プール内のすべての接続が使用され、最大プール・サイズに到達しているときの最大待機時間もこのプロパティにより決定されます。 > > このプロパティが指定されていない場合、LDAPプロバイダはプールされた接続が利用できるまで無限に待機します。また新しい接続を作成するときにはデフォルトのTCPタイム・アウトが有効になるのを待機します。 > > このプロパティは、アイドル状態のプールされた接続の削除に関連するcom.sun.jndi.ldap.connect.pool.timeoutシステム・プロパティとは異なることに注意してください。 > > > とのことなので、全くの別物のようです。 次に`com.sun.jndi.ldap.connect.pool`についてですが、同じページの15.1に以下の記載があります。 > > アプリケーションは、初期コンテキスト・コンストラクタに渡される環境プロパティにcom.sun.jndi.ldap.connect.poolプロパティを追加することによって、接続プールを要求します。 > > > なので、デフォルトでfalseというよりかは未定義の環境変数と捉えるのが正しいかと思います。