需要帮助在Tomcat中设置多个领域

rjc*_*arr 2 java tomcat jdbcrealm

我正在尝试在tomcat中设置两个领域,并且由于某种原因它不会让我.我想使用标准的UserDatabaseRealm(conf/tomcat-users.xml)来执行管理工作(比如部署webapps),但我想要一个自定义域来为特定的webapp进行身份验证.

所以,我尝试将其放在我的webapp上下文中:

<Context>
  <GlobalNamingResources>
    <Resource name="CustomDatabase" auth="Container"
      type="org.apache.catalina.UserDatabase"
      description="User database that can be updated and saved"
      factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
      pathname="/usr/java/apache-tomcat-6.0.35/conf/tomcat-users.xml" 
    />
  </GlobalNamingResources>
  <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
    resourceName="CustomDatabase"
   />
</Context>
Run Code Online (Sandbox Code Playgroud)

这只是server.xml中的一个副本,其中包含一些更改:

  • 该名称从UserDatabase更改为CustomDatabase.

  • 路径名是绝对路径名(和我用于主域的路径名相同).

我总是得到同样的错误:

LifecycleException:  No UserDatabase component found under key CustomDatabase
Run Code Online (Sandbox Code Playgroud)

我不知道它告诉我什么.它在谈论什么组成部分?

除了上面的上下文,我还尝试了其他一些东西,但它总是会出现同样的错误:

  • 我尝试使用GlobalNamingResources标记包装资源以及是否存在相同的错误.

  • 我已经尝试将Resource的auth属性更改为Container和Application并获得相同的错误.

我错过了什么?谷歌的所有帮助主要是人们弄乱他们的主要领域(我的很好)不试图配置第二个领域.

Pet*_*ler 8

你可以用org.apache.catalina.realm.CombinedRealm.从Tomcat 文档:

<Realm className="org.apache.catalina.realm.CombinedRealm" >
  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
         resourceName="UserDatabase"/>
  <Realm className="org.apache.catalina.realm.DataSourceRealm"
         dataSourceName="jdbc/authority"
         userTable="users" userNameCol="user_name" userCredCol="user_pass"
         userRoleTable="user_roles" roleNameCol="role_name"/>
</Realm>
Run Code Online (Sandbox Code Playgroud)