Tomcat Error Configuring for LDAP

I am referencing LDAP in the Tomcat security area in the Tomcat server.xml file. However, I get an unusual error: Tomcat does not start and logs, I see that it could not connect to localhost: 389 - Tomcat's default LDAP URL.

However, Tomcat is configured to specify a different URL (rather than the external URL of the same computer, completely different), for example:

<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"/> 

And basically, I don’t know why he is still looking at localhost: 389. If someone came across this before, I would appreciate help! I searched Google several times, but while people are inserting an error into the pages, there seem to be not many answers. If anyone has any suggestions, I would be grateful.

Here's the log file:

 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) 
+4
source share
3 answers
  • Many tomcats configuration items support the debug attribute. Try adding debug = "99" to the scope configuration. (see examples in tomcats realm-howto , search debug = "99")
  • make extra extra confidence that it’s not a typo, for example. in compound capitalization url
  • see if there are any other references to "localhost" (or "127.0") in conf / server.xml
  • see if there is a mention of "localhost" (or "127.0") in conf / * / * / *. xml (although this should not cause tomcat to not start: it will just affect this application)
  • Start with the minimum server.xml - if you are using tomcat 5.x, the server-minimal.xml file has been delivered in such a way as to read it better than the default server.xml
  • Make sure that the various XML comments in server.xml are not affected. I bit them several times.
+1
source

try adding the alternateURL attribute with the same value as connectionURL. For some reason, this worked for me when I had a similar problem.

+2
source

I know this is a really old article, but I recently had this problem, and the problem was that I put my JNDIRealm into LockoutRealm.

By placing JNDIRealm as the top-level area, I no longer describe the problem. If you really need a lockout area, this solution does not help.

+2
source

All Articles