我正在尝试在 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 标记包装资源以及是否存在相同的错误。
我尝试将 Resource 的 auth 属性更改为 Container 和 Application 并得到相同的错误。
我错过了什么?谷歌的所有帮助主要是人们搞砸了他们的主要领域(我的很好)而不是试图配置第二个领域。