2011-06-29 76 views
3

有提供的SocketFactory到InitialLdapContext的靜態方法:有沒有辦法將SocketFactory _instance_提供給InitialLdapContext?

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
相關問題