gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 21:54:31 24 4
gpt4 key购买 nike

我正在尝试在 tomcat 中设置两个领域,但出于某种原因它不允许我这样做。我想使用标准的 UserDatabaseRealm (conf/tomcat-users.xml) 来执行管理操作(比如部署网络应用程序),但我想要一个自定义领域来对特定的网络应用程序进行身份验证。

所以,我尝试将它放在我的 web 应用程序的上下文中:

<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 标签包装 Resource 是否有同样的错误。

  • 我尝试将 Resource 的 auth 属性同时更改为 Container 和 Application,但得到了同样的错误。

我错过了什么?来自谷歌的所有帮助大多是人们搞砸了他们的主要领域(我的很好)而不是试图配置第二个领域。

最佳答案

您可以使用 org.apache.catalina.realm.CombinedRealm。来自 Tomcat documentation :

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

关于java - 需要帮助在 Tomcat 中设置多个领域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12974304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com