Weblogic集群401(未经授权)

时间:2014-07-21 10:22:15

标签: java weblogic weblogic-10.x

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

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

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

您是否启用了内存复制(默认情况下禁用)? (weblogic.xml描述符中的元素。如果不是,请使用:

启用它
 <session-descriptor>
    <persistent-store-type>replicated_if_clustered</persistent-store-type>
 </session-descriptor>

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

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

如何维护群集亲和力?

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

相关问题