LifecycleException:在key下找不到UserDatabase组件

时间:2013-01-05 07:09:56

标签: tomcat

这是我的servlet.xml文件

<GlobalNamingResources>
  <Resource auth="Container"
 driverClassName="oracle.jdbc.driver.OracleDriver"
     initialSize="5"
       maxActive="120"
         maxIdle="5"
         maxWait="5000"
            name="jdbc/EPRT_DEV"
        password="admin"
             url="jdbc:oracle:thin:hr/password@192.168.178.83:1521:XE"
        username="system"
         factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
        pathname="conf/tomcat-users.xml"
            type="javax.sql.DataSource" />
</GlobalNamingResources>

<!--
  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
      resourceName="UserDatabase"/>
-->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    resourceName="jdbc/EPRT_DEV"/>

这是我的context.xml文件

<ResourceLink name="jdbc/EPRT_DEV"
            global="jdbc/EPRT_DEV"
              type="javax.sql.DataSource"/>

有什么想法吗?请帮帮我..

2 个答案:

答案 0 :(得分:4)

首先,Tomcat没有识别出名为servlet.xml的文件。我希望你的意思是CATALINA_BASE/conf/server.xml

其次,您的<Resource>定义完全混乱:您需要阅读Tomcat documentation on Resource definitionsMemoryUserDatabaseFactory旨在读取由path定义的<Resource>属性指定的文件,但您似乎正在尝试使用Oracle数据库进行身份验证。

同样,您使用的是UserDatabaseRealm(旨在与MemoryUserDatabaseRealm配对),然后尝试将其连接到损坏的数据源。

如果您要使用Oracle,请从factory定义中删除pathname<Resource>属性,并将className中的<Realm>更改为org.apache.catalina.realm.DataSourceRealm。也请阅读DataSourceRealm documentation,因为它的配置与您在此处的配置完全不同。

如果您需要重新发布,请包含您遇到的任何错误的完整堆栈跟踪,并编辑您的帖子以包含正确的详细信息,而不是从内存中执行所有操作。

答案 1 :(得分:0)

你们可能会写一些tomcat-users.xml中不允许的东西

之前我在“角色”中添加了管理员,我得到了同样的错误..我刚从tomcat-users.xml中删除了这些角色