4

Tomcatserver.xmlファイルのTomcatセキュリティレルムでLDAPを参照しています。ただし、異常なエラーが発生します。Tomcatが起動せず、ログを調べると、localhost:389(TomcatのデフォルトのLDAP URL)への接続に失敗していることがわかります。

ただし、Tomcatは、次のように、別のURL(同じマシンの外部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を見ているのかわかりません。誰かが以前にこれに遭遇したことがあれば、私はいくつかの助けをいただければ幸いです!私はしばらくの間グーグルで検索しましたが、人々がエラーをページに貼り付けている間、そこには多くの答えがないようです。何か提案があればありがたいです。

ログファイルは次のとおりです。

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

3 に答える 3

2

connectionURLと同じ値で'alternateURL'属性を追加してみてください。どういうわけか、私が同様の問題を抱えていたとき、これは私のために働きました。

于 2009-09-14T14:40:53.013 に答える
2

これが非常に古い投稿であることは承知していますが、最近この問題が発生しました。問題は、JNDIRealm を LockoutRealm 内にネストしたことにありました。

JNDIRealm を最上位レルムとして配置することで、この問題は説明されなくなりました。ただし、ロックアウト領域が必要な場合、このソリューションは役に立ちません。

于 2011-12-12T22:04:21.063 に答える
1
  • tomcats 構成要素の多くはdebug属性をサポートしています。レルム構成にdebug="99"を追加してみてください。( tomcats realm-howtoの例を参照し、debug="99"を検索してください)
  • 接続URLの大文字化など、タイプミスではないことをさらに確認してください
  • conf/server.xml に「localhost」(または「127.0」) の言及があるかどうかを確認します。
  • conf/*/*/*.xml に「localhost」(または「127.0」) の言及があるかどうかを確認します (ただし、Tomcat が起動しない原因にはなりません。そのアプリケーションに影響するだけです)。
  • 最小限の server.xml から始めます。Tomcat 5.xa を使用している場合、デフォルトの server.xml よりもはるかに読みやすいファイル「server-minimal.xml」が配信されました。
  • server.xml のさまざまな xml コメントの影響を受けていないことを確認してください - 私はそれらに何度も噛まれました。
于 2009-03-07T12:25:21.263 に答える