6

在盯着 Tomcat 时,我收到以下错误:

SEVERE: Exception looking up UserDatabase under key UserDatabase
javax.naming.NameNotFoundException: Name UserDatabase is not bound in this Context
at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
at org.apache.catalina.realm.UserDatabaseRealm.start(UserDatabaseRealm.java:253)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1049)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
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:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Jul 6, 2012 4:32:25 PM org.apache.catalina.startup.Catalina start

SEVERE: Catalina.start: 
LifecycleException:  No UserDatabase component found under key UserDatabase
at org.apache.catalina.realm.UserDatabaseRealm.start(UserDatabaseRealm.java:261)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1049)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
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:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

我之前在 Server.xml 中使用了相同的 dB 配置,并且 Tomcat 工作正常,但是自从我更改服务器并安装新副本后的最后两天,它抛出了这个错误。

server.xml 中定义的 GlobalNamingResources 如下:

<GlobalNamingResources>
<Resource name="jdbc/abcdOracle" auth="Container"
type="javax.sql.DataSource" 
maxActive="100" initialSize="5" maxWait="2000" 
username="xxxxxx" password="xxxxxx" 
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@xxxxxx.xxxxxx.net:1523:ABCDE"
validationQuery="select sysdate from dual" 
validationInterval="30000"
testWhileIdle="true" testOnBorrow="true" testOnReturn="false"
removeAbandoned="true" logAbandoned="true"
removeAbandonedTimeout="60" /> 
</GlobalNamingResources>

任何人都有任何提示如何解决这个问题。谢谢。

4

8 回答 8

7
于 2014-03-08T13:53:47.590 回答
5

您已经删除了tomcat-users.xml默认情况下$CATALINA_BASE/conf在 JNDI 中注册的 。UserDatabase

于 2012-07-06T20:55:11.487 回答
5

我认为您已从 server.xml 中删除了以下代码

<Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" /> 

代替它

于 2012-08-08T09:28:48.050 回答
2

/var/log/tomcat6/catalina.out 中的错误:

GRAVE: Catalina.start:
LifecycleException:  No UserDatabase component found under key UserDatabase

验证tomcat-users.xml的位置:

# updatedb
# locate tomcat-users.xml
/etc/tomcat6/tomcat-users.xml

打开 /etc/tomcat6/server.xml 并编辑:

<Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" /> 

通过向 tomcat-users.xml 文件插入正确的路径。在我的情况下是:

pathname="tomcat-users.xml"
于 2013-11-19T07:41:58.937 回答
1

这也可能意味着您的 tomcat-users.xml 文件的属性中有一个 XML 字符。

例如,当我在 tomcat-users.xml 中的用户的密码字段中有一个“<”字符时,我已经看到了这种情况

文件摘录:

/etc/tomcat6/tomcat-users.xml

<role rolename="manager"/>
<user username="admin" password="<password" roles="manager"/>
于 2013-01-28T13:48:29.917 回答
1

在 server.xml 中,Resource元素或其父GlobalNamingResources元素不是强制性的。如果您删除资源正在访问的内容(例如,tomcat-users.xml),您只会遇到问题。

如果您注释掉默认GlobalNamingResources元素,请确保在 server.xml 中向下滚动并删除LockOutRealmUserDatabase默认情况下,它使用GlobalNamingResources.

于 2014-07-28T22:31:24.660 回答
1

确保您拥有<?xml version="1.0" encoding="UTF-8"?>

于 2021-02-22T16:13:35.657 回答
0

就我而言,在查看了之前建议的其他解决方案之后,我意识到这只是一个权限问题。我只需要将 tomcat-users.xml 文件的所有权授予运行 tomcat 进程的用户:

chown tomcat:tomcat $CATALINA_BASE/conf/tomcat-users.xml
于 2021-01-26T18:33:49.687 回答