Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error in Tomcat during Startup: DB name not found

While staring the Tomcat, I am getting the following error:

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)

I used the same dB configuration before in Server.xml and Tomcat was working fine, but since last 2 days when I change the server and install a new copy, it's throwing this error.

The GlobalNamingResources defined in server.xml are as follows:

<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>

Anyone have any hint how to solve this issue. Thanks.

like image 625
user1417746 Avatar asked Jul 06 '12 20:07

user1417746


5 Answers

I've got this issue caused by XML syntax errors in my tomcat-users.xml. Though these erros are totally obvious, they took some time to be found out and fixed:

1. Invalid double quotes

  • Wrong: <role rolename=manager-script/>
  • Right: <role rolename="manager-script"/>

2. Missing close double quotes

  • Wrong: <user username="tomcat" password="tomcat" roles="manager-gui,manager-script/>
  • Right: <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>

3. Missing close slash

  • Wrong: <role rolename="admin">
  • Right: <role rolename="admin"/>

4. Missing space between the attributes

  • Wrong: <user username="tomcat" password="tomcat"roles="manager-gui,manager-script"/>
  • Right: <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
like image 119
Nikita Bosik Avatar answered Nov 13 '22 15:11

Nikita Bosik


You have removed the tomcat-users.xml from $CATALINA_BASE/conf which is registered in JNDI as UserDatabase by default.

like image 27
Michael-O Avatar answered Nov 13 '22 15:11

Michael-O


I think you have removed below code from 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" /> 

replace it

like image 32
janakiram Avatar answered Nov 13 '22 14:11

janakiram


Error in /var/log/tomcat6/catalina.out:

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

Verify the position of tomcat-users.xml:

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

Open the /etc/tomcat6/server.xml and edit:

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

by inserting a correct path to tomcat-users.xml file. In my case is:

pathname="tomcat-users.xml"
like image 2
minja Avatar answered Nov 13 '22 16:11

minja


This could also mean that you have an XML character in an attribute of your tomcat-users.xml file.

For example, I've seen this happen when I had a "<" character in the password field for a user in tomcat-users.xml

File excerpt:

/etc/tomcat6/tomcat-users.xml

<role rolename="manager"/>
<user username="admin" password="<password" roles="manager"/>
like image 1
Brad Parks Avatar answered Nov 13 '22 15:11

Brad Parks