2012-07-06 164 views
6

雖然盯着Tomcat的,我收到以下錯誤:錯誤:DB找不到名稱

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> 

任何人有任何提示如何解決這個問題。 謝謝。

回答

5

您已將tomcat-users.xml$CATALINA_BASE/conf中刪除,默認情況下,它在JNDI中註冊爲UserDatabase

+0

還是一樣的錯誤.....沒有快捷方式的任何具體解決方案... – user1417746 2012-07-06 21:00:15

+1

分享整個'server.xml'文件。 – 2012-07-06 21:04:55

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

更換

1

這也可能意味着你有你的tomcat-users.xml文件的屬性的XML字符。

例如,我已經看到這種情況發生時,我曾在密碼領域的 「<」 字符有關Tomcat-users.xml中用戶

文件摘錄:

的/ etc/tomcat6中/tomcat-users.xml

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

錯誤/var/log/tomcat6/catalina.out:

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

驗證Tomcat的users.xml中的位置:通過插入正確的路徑Tomcat的用戶

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

:和

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

打開/etc/tomcat6/server.xml 編輯.xml文件。在我的情況是:

pathname="tomcat-users.xml" 
+0

它沒有工作。 – 2016-03-27 19:30:57

7

我有這個問題,由我的tomcat-users.xml 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"/>
+0

這工作!我錯過了一個最後的雙引號。 – MAC 2017-11-13 18:11:26

1

在server.xml中,Resource元素或其父元素GlobalNamingResources不是必需的。如果您刪除了資源正在訪問的內容(例如,tomcat-users.xml),則只會遇到問題。

如果您註釋掉默認的GlobalNamingResources元素,請確保在server.xml中向下滾動並刪除LockOutRealm。它默認使用UserDatabase,在GlobalNamingResources中指定。

相關問題