Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WebSphere中跨JVM的会话复制_Java_Session_Replication_Websphere - Fatal编程技术网

Java WebSphere中跨JVM的会话复制

Java WebSphere中跨JVM的会话复制,java,session,replication,websphere,Java,Session,Replication,Websphere,我们建立了一个基础设施,其中Web服务器是集群的,而应用服务器不是集群的。Web服务器基于循环策略将请求路由到应用程序服务器 在此场景中,一个应用服务器中可用的会话数据在另一个应用服务器中不可用。在第二个应用程序中,是否仍然可以使用来自第一个应用程序服务器的会话数据?这两个应用服务器在不同单元中是物理上独立的盒子 一种方法是使用数据库-是否有其他方法来完成此会话复制?也许您可以看看“terracota”。它是一个缓存框架,可以缓存会话并在单独的服务器上运行。在WebSphere中,复制会话数据基

我们建立了一个基础设施,其中Web服务器是集群的,而应用服务器不是集群的。Web服务器基于循环策略将请求路由到应用程序服务器

在此场景中,一个应用服务器中可用的会话数据在另一个应用服务器中不可用。在第二个应用程序中,是否仍然可以使用来自第一个应用程序服务器的会话数据?这两个应用服务器在不同单元中是物理上独立的盒子


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

也许您可以看看“terracota”。它是一个缓存框架,可以缓存会话并在单独的服务器上运行。在WebSphere中,复制会话数据基本上有两种方法:

  • 持久化到数据库
  • 内存到内存的传输
  • 哪一个适合您的需要在很大程度上取决于您的应用程序场景:

    当所有应用程序服务器都停机时,会话数据的持久性有多重要? 您在同一时间同时拥有多少个会话对象

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

    如果你已经建立了一个数据库,我会使用它,所有的应用服务器都会使用它


    以下是指向的链接,其中包含必要的详细信息。

    不要忘记oracle一致性。

    一个明显的解决方案是启用应用程序服务器群集。从你提问的措辞来看,我认为你拒绝了这个选项。另一个选项是将web服务器使用的路由更改为使用会话关联(相同会话的请求转到相同的应用程序服务器)


    除此之外,我支持dertoni的回答。

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


    通过数据库会话处理,它也非常可定制,在我使用过的环境中性能不明显。

    我相信您可以在WAS控制台中将它们配置为集群,不是吗?感谢您的响应dertoni。我们使用了相当多的会话数据——同意这是一种不好的做法,但作为一个维护应用程序,到目前为止,它一直是一个很好的例子。如果我们碰巧将数据保存在数据库中,我们将不得不检索数据并重新填充应用程序对象,以重新显示预期页面,这在这里是一个挑战。您知道websphere是否复制会话数据,尽管在web应用程序的web.xml中,标记“distributable”不存在?在大多数情况下,会话亲和力是穷人解决这个问题的办法。