-->

在启动过程中的错误在Tomcat中:DB找不到名称(Error in Tomcat during S

2019-09-19 04:08发布

虽然盯着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中和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>

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

Answer 1:

我有我的所造成的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"/>


Answer 2:

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



Answer 3:

我认为你从下面的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" /> 

代替它



Answer 4:

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


Answer 5:

这也可能意味着你必须在你的tomcat-users.xml文件的属性的XML字符。

例如,我已经看到这种情况发生时,我曾在密码领域的“<”字符中的tomcat-users.xml中用户

文件摘录:

/etc/tomcat6/tomcat-users.xml

<role rolename="manager"/>
<user username="admin" password="<password" roles="manager"/>


Answer 6:

server.xml中,所述Resource元素,或它的父GlobalNamingResources元件不是强制性的。 你只会有问题,如果你去掉什么资源被访问(例如,Tomcat的users.xml中)。

如果您注释掉默认GlobalNamingResources元素,然后确保你在server.xml中向下滚动并删除LockOutRealm为好。 它使用UserDatabase默认情况下,在指定的GlobalNamingResources



文章来源: Error in Tomcat during Startup: DB name not found