如何在 Context xml 文件中的 Tomcat 中定义 UserDatabase?
How to define UserDatabase in Tomcat within a Context xml file?
我一直在尝试通过仅设置上下文文件来使用 Tomcat 配置设置身份验证。
给定以下 webapp 上下文文件 conf/Catalina/localhost/myapp.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name="MyUserDatabase"
auth="Container"
type="org.apache.catalina.UserDatabase"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/myapp-users.xml"
/>
<Realm
className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="MyUserDatabase"
/>
</Context>
启动Tomcat时出现如下错误:
javax.naming.NameNotFoundException: Name [MyUserDatabase] is not bound in this Context. Unable to find [MyUserDatabase].
但是,如果我在 <GlobalNamingResources>
下的 server.xml
中定义 <Resource name="MyUserDatabase"...
,它会按预期工作。 documentation for contexts 清楚地表明 <Resource>
元素在那里有效。
是否有一种特殊的方式来引用上下文文件中定义的资源?还是根本不可能?
以防万一,我正在处理 Tomcat 9.
您需要将 属性 localJndiResource="true"
添加到您的领域:
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="MyUserDatabase"
localJndiResource="true"/>
没有这个 属性 Tomcat 在 <GlobalNamingResources>
中查找资源(参见 Tomcat documentation)。
我一直在尝试通过仅设置上下文文件来使用 Tomcat 配置设置身份验证。
给定以下 webapp 上下文文件 conf/Catalina/localhost/myapp.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name="MyUserDatabase"
auth="Container"
type="org.apache.catalina.UserDatabase"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/myapp-users.xml"
/>
<Realm
className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="MyUserDatabase"
/>
</Context>
启动Tomcat时出现如下错误:
javax.naming.NameNotFoundException: Name [MyUserDatabase] is not bound in this Context. Unable to find [MyUserDatabase].
但是,如果我在 <GlobalNamingResources>
下的 server.xml
中定义 <Resource name="MyUserDatabase"...
,它会按预期工作。 documentation for contexts 清楚地表明 <Resource>
元素在那里有效。
是否有一种特殊的方式来引用上下文文件中定义的资源?还是根本不可能?
以防万一,我正在处理 Tomcat 9.
您需要将 属性 localJndiResource="true"
添加到您的领域:
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="MyUserDatabase"
localJndiResource="true"/>
没有这个 属性 Tomcat 在 <GlobalNamingResources>
中查找资源(参见 Tomcat documentation)。