【问题标题】:Weblogic cluster 401 (Unauthorized) [closed]Weblogic集群401(未经授权)[关闭]
【发布时间】:2014-07-21 10:22:14
【问题描述】:

我在 Spring -MVC 项目中工作,该项目部署在 Weblogic 服务器中,它配置了 2 个集群。当请求从一个集群发送到另一个集群时,我们收到"401 (Unauthorized)" 错误。

但它适用于某些请求并有时会导致此错误。

知道为什么会这样吗?

【问题讨论】:

    标签: java weblogic weblogic-10.x


    【解决方案1】:

    如果您将安全性委托给 Servlet 容器并将您的应用程序部署到 2 个不同的集群(ClusterA、ClusterB),默认情况下您将拥有两个不同的会话 SessionA 和 SessionB(具有相同的 cookie 名称,JSESSIONID)。如果您没有会话关联性并且您的请求从 ClusterA 跳转到 ClusterB,您的 SessionA(带有主题)将在 ClusterB 上无效。

    如果您正在寻找两个集群拓扑的最大可用性,请考虑将 HTTP 会话状态委托给 Coherence(请参阅 Coherence*Web at http://docs.oracle.com/middleware/1212/coherence/COHCW/cweb_wls.htm#CHDDGJHJ)。

    使用此拓扑,您可以在部署在不同集群(甚至不同的 WebLogic Server 域和/或不同的应用程序服务器)上的许多应用程序之间共享会话。

    【讨论】:

    • 但是对于某些请求它是成功的,对于某些请求它以这个错误结束。
    • 您是否启用了内存复制? weblogic.xml 描述符中的 元素:
    【解决方案2】:

    您是否启用了内存复制(默认禁用)? ( weblogic.xml 描述符中的元素。如果没有,请使用以下命令启用它:

     <session-descriptor>
        <persistent-store-type>replicated_if_clustered</persistent-store-type>
     </session-descriptor>
    

    当第一个请求到达 ClusterA 中的任何托管服务器时,它会创建一个 SessionID(检查您浏览器中的 JSESSIONID cookie)。

    您如何在两个集群之间平衡您的请求(硬件负载平衡器或 Web 服务器 + 代理插件)

    如何保持集群亲和性?

    如果没有集群关联,ClusterA 中任何托管服务器处理的所有请求都可以访问会话状态(启用内存复制时由 WLS 集群内部复制),但如果集群关联失败并且请求(最初由 ClusterA 提供的服务器)由集群 B 中的任何托管服务器处理,Servlet 容器将找不到您的 cookie 与 ClusterB 识别的任何 HTTSession,它将失败并创建一个新 Session(检查浏览器中的 cookie)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 2018-05-19
      • 2020-06-11
      • 2017-02-22
      • 2018-10-08
      • 2018-01-05
      • 1970-01-01
      相关资源
      最近更新 更多