【问题标题】:Want to configure shared tomcat realm with different datasources想用不同的数据源配置共享 tomcat 领域
【发布时间】:2011-10-25 15:54:28
【问题描述】:

我有两组 Web 应用程序,它们都在同一个 Tomcat 5.5 服务器上运行。

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

<!-- 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" />

我的“美国”应用程序都希望与此数据源共享 SingleSignOn,而我的“加拿大”应用程序则希望使用单点登录,但使用不同的数据源。 (例如jdbc/canada

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

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

【问题讨论】:

    标签: tomcat single-sign-on tomcat5.5


    【解决方案1】:

    您可以将Realm 放在Host(甚至是Context)元素中。如果您的 usacanada 应用程序在不同的Hosts 中运行,这可能是一个解决方案。

    如果它们在同一个 Host 内,您必须在 usa 应用程序的每个 Context 内放置一个 Realm 标记,并让 canada 应用程序使用默认 Realm(嵌套在 Engine 标签中),反之亦然。

    来自文档,Realm Configuration HOW-TO, Configuring a Realm

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

    [...]

    • 在元素内部 - 此领域将在此虚拟主机的所有 Web 应用程序之间共享,除非它被领域覆盖 嵌套在从属元素中的元素。
    • 在元素内部 - 此领域将仅用于此 Web 应用程序。

    这是一个类似的问题,答案中有一个示例:how can I restrict users to access ONLY their own manager?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-31
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多