1

我在负载均衡器后面有 2 个 WSO2 Enterprise Integrator。

我想激活 tomcat http 会话复制,并遵循 WSO2 文档。看起来很简单:添加

<Cluster className="org.wso2.carbon.core.session.CarbonTomcatSimpleTcpCluster"/>
and
<Valve className="org.wso2.carbon.webapp.mgt.session.CarbonTomcatSessionReplicationValve"/>
in catalina-server.xml, and make application distributable by adding <distributable/>

在 web.xml 中。

糟糕的是,WSO2 似乎向会话添加了一些不可序列化的属性,从而导致复制失败。当我尝试连接到 carbon 应用程序时,出现以下异常:

ERROR - ApplicationDispatcher Servlet.service() for servlet bridgeservlet threw exception java.lang.IllegalArgumentException: setAttribute: Non-serializable attribute CarbonAuthenticator
    at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1453)
    at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1413)
    at org.apache.catalina.session.StandardSessionFacade.setAttribute(StandardSessionFacade.java:149)
    at org.eclipse.equinox.http.servlet.internal.HttpSessionAdaptor.setAttribute(HttpSessionAdaptor.java:96)
    at org.wso2.carbon.ui.tracker.AuthenticatorRegistry.getCarbonAuthenticator(AuthenticatorRegistry.java:82)
    at org.wso2.carbon.ui.CarbonUILoginUtil.getAuthenticator(CarbonUILoginUtil.java:69)
    at org.wso2.carbon.ui.CarbonSecuredHttpContext.handleSecurity(CarbonSecuredHttpContext.java:76)
    at org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:60)
    at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
    at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)

精度:我尝试了全新的 WSO2EI 6.1.1 安装,只进行了前面描述的修改。

我还必须在 wso2/lib/endorsed 上手动添加 tomcat-juli-7.0.75.jar 和 tomcat-trives-7.0.75.jar 以避免 ClassNotFoundException。

我检查了 WSO2 源代码,发现 CarbonAuthenticator 类实际上是不可序列化的。

是否有人已经成功配置了 http 会话复制?

提前致谢,

问候,

洛朗

4

0 回答 0