java ldap socketfactory

java - ¿Hay alguna manera de proporcionar SocketFactory_instance_ a InitialLdapContext?



(1)

Hay una forma estática de proporcionar SocketFactory a InitialLdapContext:

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

Pero, ¿hay alguna forma de proporcionar la instancia en sí misma en lugar de su nombre de clase? La fábrica de mi socket está parametrizada con la corriente de entrada del certificado de confianza y se pueden configurar muchas instancias de InitialLdapContext con diferentes certificados de confianza. Por cierto esto se ejecutará en el entorno OSGi.

Gracias por adelantado.


Inspeccionando la fuente de com.sun.jndi.ldap.Connection.createSocket(String, int, String, int) Puedo ver que desafortunadamente no hay forma de hacer esto. Es triste que tantas API centrales de Java tengan ese mal diseño.

La solución podría ser usar una implementación diferente:

  • Netscape LdapSdk
  • OpenLDAP JLdap
  • API LDAP de Apache Directory