2011-06-29 12 views
3

InitialLdapContextをへのSocketFactoryを提供する静的な方法があります:InitialLdapContextにSocketFactory _instance_を提供する方法はありますか?

env.put("java.naming.ldap.factory.socket", MySocketFactory.class.getName()); 
new InitialLdapContext(env, null); 

は、しかし、インスタンス自体の代わりに、そのクラス名を提供するために、いくつかの方法がありますか?私のソケットファクトリは、信頼できる証明書の入力ストリームでパラメータ化され、異なる信頼できる証明書を使用してInitialLdapContextの多くのインスタンスを設定できます。これはOSGi環境で実行されます。

ありがとうございます。

+0

私は同じことをしたい - 私が求めてきましたこの質問は前に - 私は現在スレッドのローカルストレージを使用してこれを行う - 参照してください:http://stackoverflow.com/questions/6424422/how-to-pass-arguments-to-an-ldap-custom-socket-factory- with-jndi – Conor

+0

ありがとうsの先端。今日私はApache LDAP APIを使って遊んでいました。それはもっと簡単でクリーンです:-) –

答えて

1

ソースの確認com.sun.jndi.ldap.Connection.createSocket(String, int, String, int)私は残念ながらこれを行う方法がないことがわかります。非常に多くのJavaコアAPIがその悪い設計をしていることは悲しいことです。

ソリューションは、別の実装を使用するようになります。

  • ネットスケープLdapSdk
  • OpenLDAPのJLdap
  • ApacheのディレクトリのLDAP API
関連する問題