Versuch, LDAP in Tomcat als JNDI-Ressource zu konfigurieren

Ich habe einen LDAP-Server, mit dem ich Benutzer in einer Tomcat-Webanwendung authentifizieren kann. Ich verwende JNDIRealm und es ist in einer Kontextdatei konfiguriert und das funktioniert großartig.

Ich muss auch die ldap nach Benutzerinformationen durchsuchen. Ich habe herausgefunden, wie man das mit der "jndi-Methode" macht, und es funktioniert auch außerhalb von Tomcat, indem ich meinen eigenen jndi-Kontext mithilfe einer Hash-Tabelle erstelle. Anstatt jedoch die JNDI-Eigenschaften im Code zu konfigurieren, möchte ich eine JNDI-Rsource in meiner Kontextdatei direkt neben der Realm-Konfiguration erstellen.

Ich denke, ich würde so etwas tun:

<Resource 
  name="ldap"
  auth="Container"
  type="com.sun.jndi.ldap.LdapCtxFactory"
  java.naming.factory.initial="com.sun.jndi.ldap.LdapCtxFactory"
  java.naming.provider.url="ldap://localhost:389"
  java.naming.security.authentication="simple"
  java.naming.security.principal="uid=rjcarr,dc=example"
  java.naming.security.credentials="abc123"
/>

Aber entweder sagt mir Tomcat, dass die Ressource nicht erstellt werden kann oder wenn ich versuche, sie mit so etwas zu initialisieren:

Context initctx = new InitialContext();
DirContext ctx = (DirContext) initctx.lookup("java:comp/env/ldap");

Tomcat teilt mir mit, dass keine Ressourceninstanz erstellt werden kann. Ich habe auch die richtige Ressourcenreferenz in meine web.xml-Datei eingefügt, daher glaube ich nicht, dass das das Problem ist.

Da LDAP mit der JNDI-Methode verwendet wird, gehe ich davon aus, dass es als Ressource konfiguriert werden kann, oder? Was vermisse ich?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage