2012-07-06 5 views
6

Mentre fissando il Tomcat, sto ottenendo il seguente errore:Errore in Tomcat durante l'avvio: nome DB non trovato

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) 

ho usato la stessa configurazione dB prima nella Server.xml e Tomcat stava lavorando bene, ma dagli ultimi 2 giorni in cui cambio il server e installo una nuova copia, viene generato questo errore.

Le GlobalNamingResources definiti in server.xml sono i seguenti:

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

Qualcuno ha qualche suggerimento su come risolvere questo problema. Grazie.

risposta

5

È stato rimosso il tomcat-users.xml da $CATALINA_BASE/conf che è registrato in JNDI come UserDatabase per impostazione predefinita.

+0

ancora lo stesso errore ..... qualsiasi soluzione concreta senza scorciatoie ... – user1417746

+1

Condividi l'intero file 'server.xml'. –

5

penso di aver rimosso sottostante Codice da 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" /> 

sostituirlo

1

Questo potrebbe anche significare che hai un carattere XML in un attributo del file tomcat-users.xml.

Per esempio, ho visto accadere questo quando ho avuto un carattere "<" nel campo password per un utente in Tomcat-users.xml

estratto del file:

/etc/tomcat6 /tomcat-users.xml

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

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

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

Verificare la posizione di tomcat-users.xml:

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

Aprire il /etc/tomcat6/server.xml e modificare:

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

inserendo un percorso corretto per tomcat-users file .xml. Nel mio caso è:

pathname="tomcat-users.xml" 
+0

non ha funzionato. –

7

ho questo problema causato da errori di sintassi XML nel mio tomcat-users.xml. Sebbene questi errori siano del tutto ovvi, hanno richiesto un po 'di tempo per essere scoperti e risolti:

1.virgolette non validi

  • scorretti: <role rolename=manager-script/>
  • destra: <role rolename="manager-script"/>

2. Manca stretti doppi apici

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

3. Manca vicino barra

  • Sbagliato: <role rolename="admin">
  • destra: <role rolename="admin"/>

4. Manca spazio tra gli attributi

  • Sbagliato: <user username="tomcat" password="tomcat"roles="manager-gui,manager-script"/>
  • destra: <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
+0

Questo ha funzionato !!! Mi ero perso una doppia citazione di chiusura. – MAC

1

In server.xml, l'elemento Resource o l'elemento principale GlobalNamingResources non è obbligatorio. Avrai solo problemi se rimuovi ciò che le risorse stanno accedendo (ad esempio, tomcat-users.xml).

Se si commento fuori l'elemento di default GlobalNamingResources, quindi assicuratevi di scorrere verso il basso in server.xml e rimuovere il LockOutRealm pure. Utilizza lo UserDatabase per impostazione predefinita, specificato in GlobalNamingResources.