要使用不同的数据源配置共享tomcat领域吗

要使用不同的数据源配置共享tomcat领域吗,tomcat,single-sign-on,tomcat5.5,Tomcat,Single Sign On,Tomcat5.5,我有两套web应用程序,它们都运行在同一台Tomcat5.5服务器上 我在server.xml中定义了一个公共领域: 我的美国应用程序都希望与此数据源共享SingleSignOn,我的加拿大应用程序希望使用SingleSignOn,但使用不同的数据源。e、 g.jdbc/加拿大 有没有一种方法可以将这个顶级引擎容器拆分为两个部分,或者配置应用程序以覆盖dataSourceName?tomcat文档说我可以定义一个引擎部分 但是这两组web应用程序都希望使用不同的数据源来连接到它。您可以将领域放在

我有两套web应用程序,它们都运行在同一台Tomcat5.5服务器上

我在server.xml中定义了一个公共领域:

我的美国应用程序都希望与此数据源共享SingleSignOn,我的加拿大应用程序希望使用SingleSignOn,但使用不同的数据源。e、 g.jdbc/加拿大

有没有一种方法可以将这个顶级引擎容器拆分为两个部分,或者配置应用程序以覆盖dataSourceName?tomcat文档说我可以定义一个引擎部分

但是这两组web应用程序都希望使用不同的数据源来连接到它。

您可以将领域放在主机中,甚至放在上下文元素中。如果您的美国和加拿大应用程序在不同的主机上运行,这可能是一个解决方案

如果它们位于同一主机内,则必须在美国应用程序的每个上下文中放置一个领域标记,并让加拿大应用程序使用嵌套在引擎标记中的默认领域,反之亦然

从文件中可以看出:

该元素可以嵌套在以下任意一个元素中 容器元素。Realm元素的位置具有直接的 对该领域范围的影响,即哪些web应用程序将 共享相同的身份验证信息:

[……]

在一个元素内部-此域将在该虚拟主机的所有web应用程序中共享,除非它被域覆盖 嵌套在从属元素中的元素。 元素内部-此域将仅用于此web应用程序。 下面是一个类似的问题,答案中有一个例子:

<!-- Define the top level container in our container hierarchy -->
<Engine defaultHost="localhost" name="Catalina">

    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

    <Realm
        className="com.key.portal.common.realm.PortalDataSourceRealm"
        debug="0"
        dataSourceName="jdbc/usa"
        userTable="user_info"
        userNameCol="username"
        userIdCol="username"
        userCredCol="password"
        userInactiveCol="inactive"
        userRoleTable="user_role"
        roleNameCol="role" />