weblogic12c 会话复制

 

配置weblogic.xml中的session-descriptor

<?xml version="1.0" encoding="UTF-8"?>  
<weblogic-web-app>  
    <container-descriptor>  
        <prefer-web-inf-classes>true</prefer-web-inf-classes>  
    </container-descriptor>  
    <session-descriptor>  
        <persistent-store-type>replicated</persistent-store-type>  
    </session-descriptor>  
</weblogic-web-app>

  

Sets the persistent store method to one of the following options:

  • memory—Disables persistent session storage.

  • replicated—Same as memory, but session data is replicated across the clustered servers.

  • replicated_if_clustered—If the Web application is deployed on a clustered server, the in-effect persistent-store-type will be replicated. Otherwise, memory is the default.

  • async-replicated—Enables asynchronous session replication in an application or Web application. See "Asynchronous HTTP Session Replication" in Performance and Tuning for Oracle WebLogic Server.

  • async-replicated-if-clustered—Enables asynchronous session replication in an application or Web application when deployed to a cluster environment. If deployed to a single server environment, then the session persistence/replication defaults to in-memory. This allows testing on a single server without deployment errors.

  • file—Uses file-based persistence (See also session-descriptor).

  • async-jdbc—Enables asynchronous JDBC persistence for HTTP sessions in an application or Web application. See Configuring Session Persistence.

  • jdbc—Uses a database to store persistent sessions. (see also session-descriptor).

  • cookie—All session data is stored in a cookie in the user's browser.

以前版本的中文参考

persistent-store-type默认值:memory

将持久性存储方法设置为以下某个选项:

memory – 禁用持久性会话存储。
replicated – 与 memory 相同,但会话数据将在群集服务器之间复制。
replicated_if_clustered – 如果 Web 应用程序部署于群集服务器上,则会复制生效的 persistent-store-type。否则,memory 为默认值。
sync-replication-across-cluster – 复制将在群集内同步发生。
async-replication-across-cluster – 复制将在群集内异步发生。
file – 使用基于文件的持久性(另请参阅 persistent-store-dir)。
jdbc – 使用数据库存储持久性会话。(另请参阅 persistent-store-pool。)
cookie – 所有会话数据都存储于用户浏览器的 cookie 中。

 

session中的对象必须都是可序列化的.

 

Http 会话复制有什么类型
有五种不同的会话持久性实现方式:

1. 内存(单个服务器,不复制)
当您使用基于内存的存储方式时,所有会话信息都存储在内存中,并且当您停止和重新启动 WebLogic Server 时,这些信息将会丢失。

2. 文件系统持久性
会话信息存储在指定的 PersistentStoreDir 中的一个文件中。

3. JDBC 持久性
会话信息存储在数据库表中。

4. 基于 cookie 的会话持久性
会话信息存储在 cookie 中。

5. 内存中复制(在群集内)
会话数据从一个服务器实例复制到内存中的另一个实例。

 

如果您检查 JsessionId,其形式如下:

   JSESSIONID=1E9Xwn7nLYfOsc1obgRZIwW5s72an7HPPvSD7iaWHMXzpHga5cQj!-1587343083!-1587348922

JSESSIONID 是缺省的 cookie 名称,可以在 weblogic.xml 中将其更改为任何内容。

JSESSIONID 的格式为:

   SessionId!PrimaryServer JVM Hash!SecondaryServer JVMHash

Every time data is changed (either set/get or removed) in the session you’ll see the logging message.

 

 Weblogic集群原理
Weblogic 服务器集群将一组服务器集合在一起工作,来提供更灵活调配的、更稳定的应用平台。服务器集群对用户是透明的,对用户来说,服务器集群只是一个简单的 server 端,然而实际上,多台服务器一起协同工作来提供服务。通过部署 weblogic 服务器的集群功能,网站对于来自网络用户的请求具备了出色的可扩展性、更高请求处理容量和冗余能力。
对于一个集成的环境,客户端的会话状态必须被保存,以使得在出现故障时能够获得备份 session 状态。 Weblogic server 提供三种途径获得客户端会话状态: 数据库复制(通过 JDBC )、基于文件的复制和内存中的复制 。
使用基于 JDBC 或基于文件的持久机制分别将客户端的会话状态保存在数据库或者文件中。当一个客户端首次连接到集群中的某台服务器时,客户端与该服务器的连接建立,同时该服务器将会话状态完整地保存在离线存储器中。随后的客户端的请求将被持续地发送给同一台 server ,这样就保证了会话状态的更新在存储机制中的保存。如果这台服务器发生故障,那么该客户端可以连接到集群中的任何一台服务器。新的服务器通过读取储存在文件系统或者是数据库中的会话状态来恢复与客户端的会话。
内存中的复制机制同样也用于保存客户端会话数据,但是它使用内存而不是其他永久存储机制。在客户端初次连接到集群中的某台服务器时,客户端与该服务器的连接建立,同时该服务器指定另外一台集群中的服务器作为辅助服务器来存储会话数据的复本。随后的客户端的请求将被持续地发送给同一台 server ,从而确保了在任何给定时间集群中都存有该客户机会话数据的两份拷贝。
当与该客户端建立连接的服务器发生故障时,客户端可以连接到集群中另一台服务器。新的服务器将通过查找保存在 Weblogic 服务器 cookie 上的信息,对保存了客户端会话状态的复本的服务器进行定位,并且复制会话状态。通过这种容错处理的方式,客户端可以透明地故障切换到另一台服务器,无需使用持续性存储器便可长期保存会话数据。 

 

而实际应用中更多情况下,是使用内存中的复制机制,Weblogic的cluster是将客户端的会话状态复制到集群中的某一台server,备份server的ip地址封装在cookie中(即jsessionid)。从而确保了在任何给定时间集群中都存有该客户机会话数据的两份拷贝。当这台服务器发生故障,Master节点会立即获取session的备份,并由此继续响应客户端请求,同时做新的复制。

 

参考:

http://edocs.weblogicfans.net/wls/docs92/webapp/sessions.html

 

你可能感兴趣的:(weblogic,会话复制)