在盯着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工作正常,但是自从我更改服务器并安装新副本的最后2天以来,它就抛出了这个错误。
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>
任何人都有任何提示如何解决这个问题。 感谢。
答案 0 :(得分:7)
我的tomcat-users.xml
中的XML语法错误导致了这个问题。虽然这些错误是完全明显的,但它们需要一些时间才能找到并修复:
<强> 1。双引号无效
<role rolename=
”
manager-script
”
/>
/ LI>
<role rolename="manager-script"/>
<强> 2。缺少近似双引号
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script
"
/>
第3。缺少密切斜线
<role rolename="admin">
<role rolename="admin"
/
>
<强> 4。属性之间缺少空格
<user username="tomcat" password="tomcat"roles="manager-gui,manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
答案 1 :(得分:5)
默认情况下,您已将tomcat-users.xml
从$CATALINA_BASE/conf
中删除,该UserDatabase
在JNDI中注册为{{1}}。
答案 2 :(得分: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" />
替换它
答案 3 :(得分: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"
答案 4 :(得分:1)
这也可能意味着您在tomcat-users.xml文件的属性中有一个XML字符。
例如,当我有一个“&lt;”时,我已经看到过这种情况。 tomcat-users.xml中用户的密码字段中的字符
文件摘录:
<强> /etc/tomcat6/tomcat-users.xml 强>
<role rolename="manager"/>
<user username="admin" password="<password" roles="manager"/>
答案 5 :(得分:1)
在server.xml中,Resource
元素或其父GlobalNamingResources
元素不是必需元素。如果删除资源正在访问的内容(例如,tomcat-users.xml),则只会出现问题。
如果您注释掉默认的GlobalNamingResources
元素,请确保在server.xml中向下滚动并删除LockOutRealm
。默认情况下,它使用UserDatabase
中指定的GlobalNamingResources
。
答案 6 :(得分:0)
就我而言,在查看之前建议的其他解决方案后,我意识到这只是一个权限问题。我只需要将 tomcat-users.xml 文件的所有权授予运行 tomcat 进程的用户:
chown tomcat:tomcat $CATALINA_BASE/conf/tomcat-users.xml
答案 7 :(得分:0)
确保您有 <?xml version="1.0" encoding="UTF-8"?>