2009-06-02 71 views
5

我们有一个基础架构设置在Web服务器集群和应用程序服务器不在的位置。 Web服务器根据循环策略将请求路由到应用程序服务器。跨WebSphere中的JVM的会话复制

在这种情况下,一个应用程序服务器中的可用会话数据在其他应用程序服务器中不可用。无论如何,第一个应用程序服务器的会话数据可以在第二个应用程序中使用吗?这两个应用程序服务器在不同单元中是物理上分离的盒子

一种方法可以使用数据库 - 是否有任何其他方式来完成此会话复制?

+0

我相信你可以将它们配置为WAS控制台内的群集,不是吗? – 2009-06-02 12:37:11

回答

1

也许你可以看看'terracota'。它的缓存框架,它可以缓存会话和运行一个单独的服务器

4

在WebSphere上主要有两种方式来复制会话数据:

  1. 坚持到数据库
  2. 存储器到存储器的传输

哪一种适合您的需求高度依赖于你的应用场景:

如何重要的是PE当所有应用程序服务器出现故障时,会话数据是否存在? 您同时拥有多少个会话对象?

在数据库中,您可以存储很多会话而没有太多问题,另一个选项始终是可用内存量的问题。

如果你已经有了一个设置,那么所有的应用服务器都会使用这个数据库。

这里是链接到WebSphere Information Center与必要的细节。

+0

感谢您的回复dertoni。我们使用了相当数量的会话数据 - 同意这是一个不好的做法,但作为一个维护应用程序,它一直是一个很好的例子。如果我们碰巧将数据保存在数据库中,我们将不得不检索它并重新填充应用程序对象以重新显示期望的页面,这在这里将是一个挑战。 – Subramanian 2009-06-10 07:12:16

+0

您是否知道websphere是否会复制会话数据,尽管在web应用程序的web.xml中,标记'distributable'不存在? http://stackoverflow.com/questions/26043080/does-websphere-replicate-the-session-although-the-web-xml-has-no-distributable-t – 2014-09-25 16:06:35

0

不要忘记oracle的连贯性。

2

一个明显的解决方案是启用您的应用程序服务器的集群。我从你提出问题的方式假定你拒绝了这个选项。另一种选择是更改Web服务器使用的路由以使用会话关联(对同一会话的请求转到同一个应用程序服务器)。

除此之外,我会通过dertoni回答答案。

1

在WebSphere,会话复制或数据库中有两种群集选项。如果您拥有大型会话对象,则最好使用数据库,因为它允许您将过时的会话卸载到磁盘。如果它们被表示,那么它们可以从数据库中提取出来,如果使用会话复制,那么这些会话不仅需要保留在内存中,而且还要保存在复制组中的其他服务器上。大会话可能会导致内存不足的情况。

对于数据库会话处理,它也是非常可定制的,并且在我已经使用它的环境中没有明显的性能。