5

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

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

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

提前致谢。

4

1 回答 1

2

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

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

  • 网景 LdapSdk
  • OpenLDAP JLdap
  • Apache 目录 LDAP API
于 2011-06-30T07:00:35.887 回答