有没有一种方法可以将SocketFactory _instance_提供给InitialLdapContext?

Mar*_*ila 5 java ldap socketfactory

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

env.put("java.naming.ldap.factory.socket", MySocketFactory.class.getName());
new InitialLdapContext(env, null);
Run Code Online (Sandbox Code Playgroud)

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

提前致谢。

Mar*_*ila 2

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

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

  • Netscape LdapSdk
  • OpenLDAP JLdap
  • Apache 目录 LDAP API