gpt4 book ai didi

java - 在应用程序 context.xml 中定义自定义 UserDatabase 资源

转载 作者:行者123 更新时间:2023-11-28 23:19:22 25 4
gpt4 key购买 nike

我想知道是否可以在应用程序 context.xml 中定义基于 org.apache.catalina.users.MemoryUserDatabaseFactory 的 UserDatabase

如果我在 tomcat-s server.xml 中将此资源定义为全局资源,似乎没问题,但如果我在应用程序的 context.xml 中定义相同的资源,则启动应用程序似乎有问题。

原始的 UserDatabase 资源完好无损,我想防止更改 server.xml 或覆盖任何现有的 tomcat conf 文件,因为最终这是应用程序特定的资源,因此它应该只为应用程序而不是全局定义服务器。这甚至可以做到吗?

context.xml 中的资源定义:

<Resource name="PeUserDatabase" 
auth="Container"
description="Custom In memory user database"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/pe-tomcat-users.xml"
type="org.apache.catalina.UserDatabase"/>

应用程序 context.xml 中资源的使用:

<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="PeUserDatabase"/>
</Realm>

异常(exception):

SEVERE: Failed to start "org.apache.catalina.realm.UserDatabaseRealm/1.0" realm
org.apache.catalina.LifecycleException: Failed to start component [Realm[UserDatabaseRealm]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162)
at org.apache.catalina.realm.CombinedRealm.startInternal(CombinedRealm.java:236)
at org.apache.catalina.realm.LockOutRealm.startInternal(LockOutRealm.java:120)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5517)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:712)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:2002)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: No UserDatabase component found under key PeUserDatabase
at org.apache.catalina.realm.UserDatabaseRealm.startInternal(UserDatabaseRealm.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
... 15 more

最佳答案

您是否设置了 override=true? .下面是一个例子。

<Context antiJARLocking="true" override="true">

如果有用请告诉我

关于java - 在应用程序 context.xml 中定义自定义 UserDatabase 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45673854/

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