问题标签 [session-replication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1300 浏览

asp.net - FOSS ASP.Net 会话复制解决方案?

我一直在为 asp.net 寻找免费/开源会话集群和复制解决方案(但收效甚微)。我遇到了常见的嫌疑人(indexus sharedcache、memcached),但是,每个人都有一些限制。

  • Indexus - 非常不成熟的存根会话接口实现。不过,它在其他方面是一个很好的缓存解决方案。
  • Memcached - 很少支持复制/故障转移,无需进入数据库后端。几个 SF.Net 项目 - 都在早期阶段中止......似乎没有任何吸引力,一个似乎已经完全商业化。
  • Microsoft Velocity - 不是 OSS,但看起来不错。不幸的是,我没有看到 CTP1 支持故障转移的地方,也没有明确的路线图。我担心这个可能会像许多其他 MS 开发项目一样掉入以太中。

我相当习惯于 Java 世界,在这种情况下,FOSS 世界可以提供许多解决此类问题的解决方案,这是理所当然的。

.Net 世界上是否有任何合适的替代品?

0 投票
1 回答
627 浏览

tomcat - JBossCacheService: 将缓存模式更改为 REPL_SYNC 后发生缓存放置错误

我们在 JBoss 4.2 上设置了一个水平集群。会话复制工作正常,直到我们将缓存模式从 REPL_ASYNC 更改为 REPL_SYNC 以解决问题。我们开始看到一些会话故障转移的警告:

如果我们仍想使用 REPL_SYNC,有谁知道为什么会发生这种情况以及如何解决它?任何帮助表示赞赏。谢谢!

0 投票
2 回答
587 浏览

java - 在 Tomcat 5.5 中强制会话复制

我在 tomcat 5.5 上运行一个 Web 应用程序。

如何强制将会话转储到磁盘中

  1. 在每个请求
  2. 在每个时间间隔
0 投票
3 回答
4229 浏览

jakarta-ee - Java EE 会话复制有哪些不同的方法?

我正在开发一个需要非常高可用性的项目,我的团队目前正在为将来的版本升级一些基础设施和软件。

我们希望启用的功能之一是不仅可以跨不同服务器进行会话复制,而且最好跨不同站点(地理分布)进行复制。那可能吗?有哪些方法?

就我目前所见,要启用会话复制,通常的供应商方法是以下之一:

  • 可序列化的会话属性
  • web.xml 中的 < distributable /> 标记以及供应商特定 xml 中的附加配置

还有其他方法吗?我应该进行内存复制吗?或者我应该坚持会话状态?哪些应用服务器供应商实施了每种解决方案?

编辑:我开始了赏金,所以我真的在寻找一个全面的答案。:)

0 投票
2 回答
513 浏览

tomcat - 在不使会话属性可序列化的情况下,是否可以在 tomcat 中进行会话复制?

在不使会话属性可序列化的情况下,是否可以在 tomcat 中进行会话复制?

0 投票
1 回答
1932 浏览

jsf - Tomcat 6 集群 - 认证会话复制

我目前有一个非常基本的集群,由两个运行在同一个 VPS 上的Tomcat 6.0.32实例(Tomcat1和Tomcat2 )组成。我通过 Apache 使用 mod_proxy_ajp 和 mod_proxy_balancer 作为负载均衡器(在同一个 VPS 上)。我们正在使用基本表单身份验证(通过 j_security_check)为用户创建经过身份验证的会话。

负载均衡器运行良好,并且在两个实例之间成功复制了未经身份验证的会话。但是,我无法在每个实例之间替换经过身份验证的会话。

我正在使用一个非常基本的 JSP,称为 session.jsp(基于 JPS 模板http://www.syslog.gr/articles-mainmenu-99/15-tomcat-cluster-session-replication.html)来测试会话以查看它是否是一个新会话并打印出 JSESSIONID。我在保护区内有一份 JSP 副本,在保护区外有一份副本。

我已经运行了以下测试:

测试 1)我在Tomcat1
上的应用程序保护区之外访问 session.jsp ,记下 JSESSIONID 并通过负载均衡器确认Tomcat1处理了请求。然后我关闭Tomcat1并刷新页面。该请求现在由Tomcat2处理(由负载平衡器确认)。当页面完成加载时,我看到了我原来的 JSESSIONID 并且我的会话仍然存在。

测试 2)我在Tomcat1
上的应用程序保护区内访问 session.jsp 。这提示我登录。登录后,我被发送到 session.jsp 并记下我的 JSESSIONID 并通过负载均衡器确认,然后Tomcat1处理了请求。然后我关闭Tomcat1并刷新页面。该请求现在由Tomcat2处理(由负载平衡器确认)。当页面加载时,我检查我的 cookie。我现在有了一个新的 JSESSIONID,并且再次提示我登录。

到目前为止,我认为经过身份验证的会话不会像未经身份验证的会话那样被复制。这是一个很好的理由还是它指向配置问题?

0 投票
1 回答
854 浏览

apache - Spring Session 复制问题

我目前正在研究我的 Spring 项目的负载平衡。我使用 Apache Web 服务器作为多个 Tomcat 实例的前端。我使用 mod_jk 进行负载平衡。当我运行它时,如果我关闭了一台服务器,我必须再次登录系统。以前,我还使用 Tomcat 的会话示例程序在更简单的示例中进行了尝试,并且会话复制工作正常。

这是我对 Apache 的httpd.confmod_jk 部分的配置:

这是我的workers.properties 设置:

我在这里放了一个我的tomcat的server.xml的样本:http: //pastebin.com/0j0ta2WA

我还在<distributable/>我的应用程序的web.xml. 我在这里错过了什么使会话复制无法正常工作吗?

  • 雄猫 5.5
  • 阿帕奇 2.2
  • mod_jk
  • 春天 2.5.6
  • JDK 1.6.0_01
0 投票
3 回答
39231 浏览

session - 粘性会话和会话复制

我正在评估在 tomcat 中使用带有会话复制的粘性会话的情况。从我最初的评估来看,我认为如果我们启用会话复制,那么在一个 tomcat 节点中启动的会话将被复制到所有其他 tomcat 节点,因此我们不需要粘性会话来继续会话,并且请求可以被任何节点接收.

但似乎会话复制通常与粘性会话一起使用,否则每当请求转到其他节点时都需要更改会话 ID。参考:http: //tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html#Bind_session_after_crash_to_failover_node

如果您必须启用粘性会话,谁能解释会话复制的真正用途是什么?因为那样你将不必要地在每个节点上复制会话,当具有给定会话 id 的请求总是去同一个节点时。在节点崩溃的情况下这可能是有益的,但是这种情况不会经常发生,并且仅为此使用会话复制似乎有点过头了。

0 投票
0 回答
875 浏览

jsf-1.2 - HtmlDataTable 不可序列化

我正在尝试在集群环境中进行会话复制。将所有支持 bean 更改为序列化对象后,但我无法序列化 HtmlDataTable

Caused By: java.io.NotSerializableException: javax.faces.component.html.HtmlDataTable at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1165) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1401) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1159) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:332) at weblogic.servlet.internal.session.ReplicatedSessionChange.writeExternal(ReplicatedSessionChange.java:124) at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1430) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1399) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1159) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:332) at weblogic.rjvm.MsgAbbrevOutputStream.writeObject(MsgAbbrevOutputStream.java:618) at weblogic.rjvm.MsgAbbrevOutputStream.writeObjectWL(MsgAbbrevOutputStream.java:609) at weblogic.rmi.internal.ObjectIO.writeObject(ObjectIO.java:38) at weblogic.rjvm.BasicOutboundRequest.marshalArgs(BasicOutboundRequest.java:88) at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:221) at weblogic.cluster.replication.ReplicationManager_1033_WLStub.update(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:600) at weblogic.cluster.replication.SecureReplicationInvocationHandler$ReplicationServicesInvocationAction.run(SecureReplicationInvocationHandler.java:184) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) at weblogic.cluster.replication.SecureReplicationInvocationHandler.invoke(SecureReplicationInvocationHandler.java:154) at $Proxy58.update(Unknown Source) at weblogic.cluster.replication.ReplicationManager.updateSecondary(ReplicationManager.java:532) at weblogic.servlet.internal.session.ReplicatedSessionData.syncSession(ReplicatedSessionData.java:594) at weblogic.servlet.internal.session.ReplicatedSessionContext.sync(ReplicatedSessionContext.java:85) at weblogic.servlet.internal.ServletRequestImpl$SessionHelper.syncSession(ServletRequestImpl.java:2810) at weblogic.servlet.internal.ServletRequestImpl$SessionHelper.syncSession(ServletRequestImpl.java:2785) at weblogic.servlet.internal.ServletResponseImpl$1.run(ServletResponseImpl.java:1480) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) at weblogic.servlet.internal.ServletResponseImpl.send(ServletResponseImpl.java:1474) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1455) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

请帮忙....

0 投票
1 回答
10741 浏览

java - 如何使会话数据可序列化

以前我们已经实现了粘性会话。

这是我们环境中的链接:Apache 中的 Sticky Session 不起作用

我们的下一个任务是实现会话复制。

我们目前正在使用 tomcat 示例,cart.jsp来演示这种行为。

据说所有的会话属性都必须实现java.io.serializable。

您对在哪里实施它有任何提示吗?我们正在密切关注本教程。

tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html