使用JSF应用程序的Weblogic Replication问题

时间:2016-07-13 17:13:13

标签: session weblogic replication weblogic12c

我在Weblogic集群上有两台服务器,并在该集群上部署了基于JSF的应用程序。我创建了名为Cluster01的Cluster,其中包含Server01和Server02 Servers。在访问应用程序时,我的请求将转到Server01。所以Server01有我的主会话,而Server02有会话副本。我试图通过停止主会话服务器(即Server01)来测试复制/故障转移。在我点击JSF应用程序上的任何功能后停止后,会显示View Expired Exception。我查看了服务器日志,其中包含以下错误。

<Jul 13, 2016 9:04:08 AM EDT> <Error> <HTTP Session> <BEA-100028> <The session data could not be deserialized.java.lang.ClassCastException: [B cannot be cast to weblogic.servlet.internal.AttributeWrapper
            at weblogic.servlet.internal.session.SessionData.getAttributeInternal(SessionData.java:449)
            at weblogic.servlet.internal.session.ReplicatedSessionData.getAttribute(ReplicatedSessionData.java:713)
            at org.jboss.weld.context.beanstore.http.AbstractSessionBeanStore.getAttribute(AbstractSessionBeanStore.java:95)
            at org.jboss.weld.context.beanstore.AttributeBeanStore.attach(AttributeBeanStore.java:110)
            at org.jboss.weld.context.AbstractBoundContext.activate(AbstractBoundContext.java:66)
            Truncated. see log file for complete stacktrace

我有Session Scoped Backing Bean。所有Domain对象都已经序列化。

环境: Weblogic Server 12c JSF2

2 个答案:

答案 0 :(得分:0)

WebLogic Server不处理jsf的托管bean的复制。这是JSF的责任。 看看这个JSF参数来处理集群复制: com.sun.faces.enableAgressiveSessionDirtying

答案 1 :(得分:0)

Oracle已经确认他们可以重现我们正在进行的复制问题。等着他们现在解决它。