JNDI vs. LDAP-Binding

Wenn man z. B. einen Rollbacktest baut und dieser programmatisch JNDI-Ressourcen bindet, dann funktioniert eventuell ein ebenfalls gebundener LDAP nicht.


final SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
final Session mailSession = javax.mail.Session.getDefaultInstance(mailProperties);
builder.bind("java:comp/env/mailSession", mailSession);

Wenn man nun in seinem LdapAccess sich einen Context geben lässt, dann ist dies der zum SimpleNamingContextBuilder Gehörende und nicht wie angedacht ein LDAP-Directory-Context.

env.put(Context.INITIAL_CONTEXT_FACTORY, LdapCtxFactory.class.getCanonicalName());
anonCtx = new InitialDirContext(env);

Ohne das programmatische JNDI-Binding funktioniert die Sache wie gedacht und man erhält den LDAP-Context.