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



我正在尝试在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>

这实际上只是server.xml中的副本,并具有几个更改:

  • 该名称从UserDatabase更改为CustomDatabase。

  • 路径名是绝对路径名(我用于主域)。

我总是遇到同样的错误:

LifecycleException:  No UserDatabase component found under key CustomDatabase

我不知道这在告诉我什么。它在说什么组成部分?

与上下文一起,我尝试了其他几件事,但是它总是给出相同的错误:

  • 我尝试用GlobalNamingResources标签包装资源以及是否存在同一错误。

  • 我尝试将资源的验证属性更改为容器和应用程序,并获得相同的错误。

我想念什么?Google的所有帮助都大多是人们弄乱了他们的主要领域(我的很好)不试图配置第二个领域。

您可以使用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>

所以,我没有真正的答案,但是我会解释自己做了什么。

我无法获得第二个UserDatabaseRealm的工作,但我真的只需要两个领域进行测试,这与类型无关(最终,第二个领域是LDAP)。

所以我正在寻找可用的领域,并为我的次级测试领域选择了一个内存,它的工作原理。然后,我成为了LDAP领域,而且也很好。

所以,对那些实际需要两个UserDatabaseRealms的人,我没有解决方案。

注意:奇怪的是,UserDataBaseRealm使用JNDI,而Jndirealm用于LDAP(从我可以看出的是,JDNI不涉及)。我敢肯定这只是一些遗产命名问题,但这很困惑。

相关内容

  • 没有找到相关文章

最新更新