2009-02-25 7 views
4

Je fais référence LDAP dans un domaine de la sécurité Tomcat dans le fichier server.xml Tomcat. Cependant, je reçois une erreur inhabituelle: Tomcat ne démarre pas, et dans les journaux, je vois qu'il n'a pas réussi à se connecter à localhost: 389 - URL LDAP par défaut de Tomcat.erreur Tomcat lors de la configuration pour LDAP

Cependant, Tomcat est configuré pour pointer à une URL différente (et non l'URL externe de la même machine, un différent tout à fait), comme suit:

<Realm className="org.apache.catalina.realm.JNDIRealm" debug="99" 
     connectionURL="ldap://XXX.XX.XX.XXX:389" 
     userSubtree="true" 
     userPattern="(cn={0},ou=XXXXXXXX,ou=XXXXX,o=XXX)" 
     roleBase="ou=XXXXXXXX,o=XXX" 
     roleName="cn" 
     roleSearch="member={0}" 
     connectionName="cn=XXXXXXXX,ou=XXXXXXXX,o=XXX" 
     connectionPassword="XXXXXXXX"/> 

Et au fond, je ne sais pas pourquoi il est toujours en train de regarder localhost: 389. Si quelqu'un a déjà rencontré ça, j'apprécierais de l'aide! J'ai googlé pendant un moment, mais pendant que les gens collez l'erreur dans les pages, il ne semble pas y avoir beaucoup de réponses là-bas. Si quelqu'un a des suggestions, je serais reconnaissant.

Voici le fichier journal:

24-Feb-2009 11:38:45 org.apache.coyote.http11.Http11Protocol init 
INFO: Initializing Coyote HTTP/1.1 on http-8443 
Starting service Tomcat-Standalone 
Apache Tomcat/4.1.31 
Catalina.start: LifecycleException: Exception opening directory server connection:  
javax.naming.CommunicationException: localhost:389 
    [Root exception is java.net.ConnectException: Connection refused: connect] 
LifecycleException: Exception opening directory server connection: 
javax.naming.CommunicationException: localhost:389 
    [Root exception is java.net.ConnectException: Connection refused: connect] 
at org.apache.catalina.realm.JNDIRealm.start(JNDIRealm.java:1558) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1126) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:316) 
at org.apache.catalina.core.StandardService.start(StandardService.java:450) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2143) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:463) 
at org.apache.catalina.startup.Catalina.execute(Catalina.java:350) 
at org.apache.catalina.startup.Catalina.process(Catalina.java:129) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:324) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:156) 
----- Root Cause ----- 
javax.naming.CommunicationException: localhost:389 
    [Root exception is java.net.ConnectException: Connection refused: connect] 
at com.sun.jndi.ldap.Connection.<init>(Connection.java:204) 
at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:119) 
at com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1668) 
at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2599) 
at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:290) 
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:53) 
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662) 
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243) 
at javax.naming.InitialContext.init(InitialContext.java:219) 
at javax.naming.InitialContext.<init>(InitialContext.java:195) 
at javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:80) 
at org.apache.catalina.realm.JNDIRealm.open(JNDIRealm.java:1482) 
at org.apache.catalina.realm.JNDIRealm.start(JNDIRealm.java:1556) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1126) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:316) 
at org.apache.catalina.core.StandardService.start(StandardService.java:450) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2143) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:463) 
at org.apache.catalina.startup.Catalina.execute(Catalina.java:350) 
at org.apache.catalina.startup.Catalina.process(Catalina.java:129) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:324) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:156) 
Caused by: java.net.ConnectException: Connection refused: connect 
at java.net.PlainSocketImpl.socketConnect(Native Method) 
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305) 
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171) 
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158) 
at java.net.Socket.connect(Socket.java:452) 
at java.net.Socket.connect(Socket.java:402) 
at java.net.Socket.<init>(Socket.java:309) 
at java.net.Socket.<init>(Socket.java:124) 
at com.sun.jndi.ldap.Connection.createSocket(Connection.java:346) 
at com.sun.jndi.ldap.Connection.<init>(Connection.java:181) 
... 24 more 
Stopping service Tomcat-Standalone 
Catalina.stop: LifecycleException: Coyote connector has not been started 
LifecycleException: Coyote connector has not been started 
at org.apache.coyote.tomcat4.CoyoteConnector.stop(CoyoteConnector.java:1296) 
at org.apache.catalina.core.StandardService.stop(StandardService.java:499) 
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:2178) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:494) 
at org.apache.catalina.startup.Catalina.execute(Catalina.java:350) 
at org.apache.catalina.startup.Catalina.process(Catalina.java:129) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:324) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:156) 
+0

Êtes-vous sûr que server.xml est le seul endroit où vous l'avez configuré? – tehvan

+0

Pour autant que je sache. J'arrive dans une installation existante qui l'a désactivé, et je ne pense pas que ce soit ailleurs. Où seraient les bons endroits à regarder? Vive –

Répondre

1
  • Beaucoup de matous éléments config soutiennent le débogage attribut. Essayez d'ajouter debug = "99" à la configuration du domaine. (Voir les exemples dans matous realm-howto, rechercher debug = « 99 »)
  • font de plus en plus que ce n'est pas une faute de frappe, par exemple la capitalisation des connectionURL
  • voir s'il y a une autre mention de « localhost » (ou « 127,0 ») dans le fichier conf/server.xml
  • voir s'il y a une mention de « localhost » (ou « 127,0 ») dans le fichier conf/. */*/* xml (bien que cela ne devrait pas causer tomcat pas commencer: ce serait tout simplement affecter cette application)
  • commencez avec un minimum server.xml - si vous utilisez tomcat 5.xa fichier « serveur minimal .xml » a été livré c'est beaucoup mieux lisible que la valeur par défaut server.xml
  • Assurez-vous que vous n'êtes pas affecté par les différents commentaires xml dans server.xml - J'ai mordu par eux à plusieurs reprises.
2

Essayez d'ajouter l'attribut 'alternateURL' avec la même valeur que connectionURL. Pour une raison quelconque, cela a fonctionné pour moi quand j'avais un problème similaire.

+0

JNDIRealm de Tomcat a un attribut alternateURL qui spécifie le serveur à contacter si le primaire est en baisse. Malheureusement, la valeur par défaut est ldap: // localhost: 389 qui n'est presque jamais la bonne valeur. Le définir sur la même valeur que connectionURL fonctionnera dans le sens où vous ne recevrez pas d'erreurs parasites concernant la connexion à localhost, mais cela ne vous aidera pas si la configuration de connectionURL ne fonctionne pas correctement. –

+0

La nouvelle tentative sur alternateURL est telle que l'erreur de connexion d'origine, quelle qu'elle soit, est avalée et l'exception levée est l'exception qui s'est produite lors de la connexion à alternateURL.Dommage, car dans la configuration de base, l'exception originale est probablement plus utile. –

2

Je sais que c'est un poste vraiment vieux eu, mais je récemment cette question et le problème réside dans le fait que j'imbriqué mon JNDIRealm dans un LockoutRealm.

En mettant l'JNDIRealm comme mon royaume de haut niveau, je n'ai plus le problème décrit. Si vous avez besoin du domaine de verrouillage, cette solution n'est pas utile.

Questions connexes