启动期间Tomcat出错:找不到DB名称

use*_*746 6 java apache tomcat server.xml

在盯着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)
Run Code Online (Sandbox Code Playgroud)

我之前在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>
Run Code Online (Sandbox Code Playgroud)

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

Nik*_*sik 7

我的问题是由XML语法错误引起的tomcat-users.xml.虽然这些错误是完全明显的,但它们需要一些时间才能找到并修复:

1.双引号无效

  • 错误: <role rolename=manager-script/>
  • 对: <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"/>


Mic*_*l-O 5

您已删除tomcat-users.xml$CATALINA_BASE/conf它在JNDI注册为 UserDatabase默认.


小智 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" /> 
Run Code Online (Sandbox Code Playgroud)

代替它