有没有办法为InitialLdapContext提供SocketFactory _instance_?

时间:2011-06-29 16:33:25

标签: java ldap socketfactory

有一种向InitialLdapContext提供SocketFactory的静态方法:

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

但是有没有办法提供实例本身而不是它的类名?我的套接字工厂使用可信证书的输入流进行参数化,并且可以配置许多具有不同可信证书的InitialLdapContext实例。顺便说一句,这将在OSGi环境中运行。

提前致谢。

1 个答案:

答案 0 :(得分:2)

检查com.sun.jndi.ldap.Connection.createSocket(String, int, String, int)的来源我可以看到遗憾的是没有办法做到这一点。令人遗憾的是,如此多的Java核心API都有这么糟糕的设计。

解决方案可能是使用不同的实现:

  • Netscape LdapSdk
  • OpenLDAP JLdap
  • Apache Directory LDAP API