2009-02-25 2 views
4

Я ссылаюсь на LDAP в области безопасности Tomcat в файле server.xml Tomcat. Однако я получаю необычную ошибку: Tomcat не запускается и входит в журналы, я вижу, что он не смог подключиться к localhost: 389 - URL-адрес LDAP по умолчанию Tomcat.Ошибка Tomcat при настройке для LDAP

Однако, Tomcat настроен на точку на другой URL (не внешний URL одной и той же машины, другой один вообще), вот так:

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

И в принципе я не знаю, почему это все еще глядя на localhost: 389. Если кто-то столкнулся с этим раньше, я был бы признателен за помощь! Я несколько раз искал Google, но, в то время как люди вставляют ошибку в страницы, там, похоже, не так много ответов. Если у кого-нибудь есть предложения, я был бы благодарен.

Вот лог-файл:

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

Вы уверены, что server.xml - это единственное место, где вы настроили его? – tehvan

+0

Насколько я знаю. Я прихожу к существующей установке, которая была отключена, и я не думаю, что это где-то еще. Где будут хорошие места для просмотра? Cheers –

ответ

1
  • Многие котами CONFIG элементы поддержки отладки атрибут . Попробуйте добавить debug = "99" в конфигурацию области. (Смотрите примеры в котах realm-howto, поиск отлаживать = «99»)
  • сделать дополнительные дополнительный уверен, что это не опечатка, например, в капитализации ConnectionURL
  • посмотреть, если есть какой-либо другие упоминания «локального» (или «127,0») в конфе/server.xml
  • посмотреть, если есть какое-либо упоминание о «локальном» (или «127,0») в конфе/*/*/*. xml (хотя это не должно приводить к тому, что tomcat не запускается: это просто повлияет на это приложение)
  • Начните с минимального server.xml - если вы используете файл tomcat 5.xa «server-minimal .xml "был доставлен таким образом, чтобы читать его лучше, чем по умолчанию server.xml
  • Убедитесь, что различные XML-комментарии в server.xml не затронуты. Я их несколько укусил.
2

попробуйте добавить атрибут alternateURL с тем же значением, что и connectionURL. По какой-то причине это сработало для меня, когда у меня была аналогичная проблема.

+0

JNDIRealm Tomcat имеет атрибут alternateURL, который указывает, что сервер должен связаться, если основной отключен. К сожалению, значением по умолчанию является ldap: // localhost: 389, который почти никогда не является правильным значением. Установка его на то же значение, что и connectionURL, будет «работать» в том смысле, что вы не получите ложных ошибок о подключении к localhost, но это не поможет вам, если что-то не так с конфигурацией для connectionURL. –

+0

Повторение на alternateURL таково, что исходная ошибка соединения, независимо от того, что она была, проглатывается, и исключение, которое выбрасывается, является исключением, которое произошло с подключением к alternateURL.Жаль, потому что в базовой конфигурации исходное исключение, вероятно, более полезно. –

2

Я знаю, что это действительно старый пост, но у меня недавно была эта проблема, и проблема заключалась в том, что я вложил свой JNDIRealm в LockoutRealm.

Поместив JNDIRealm в качестве сферы моего верхнего уровня, я больше не описываю проблему. Если вам действительно нужна область локаута, это решение не помогает.

Смежные вопросы