为 Liberty 概要文件配置会话持久性
如果必须在服务器重新启动或意外的服务器故障期间保留会话数据,那么可以配置 Liberty 概要文件以将会话数据持久存储到数据库。此配置可让多个服务器共享相同的会话数据,这样在发生故障转移时可以恢复会话数据。
关于此任务
要在 Liberty 概要文件中配置一个或多个服务器以将会话数据持久存储到数据库,请完成下列步骤。
过程
- 定义可以在您的所有服务器之间复用的共享会话管理配置。作为最低要求,您必须完成下列步骤:
- 启用 sessionDatabase-1.0 功能部件。
- 定义数据源:
<dataSource id="SessionDS" ... />
- 请参阅会话数据库配置中的数据源。
<httpSessionDatabase id="SessionDB" dataSourceRef="SessionDS" ... />
- 请参阅会话管理配置中的持久存储位置。
<httpSession storageRef="SessionDB" ... />
注: httpSession 元素的 storageRef 属性及 httpSessionDatabase 元素的 id 属性不是必需的。如果已启用 sessionDatabase-1.0 功能部件,并且 httpSessionDatabase 元素引用了有效的数据源,那么即使未设置 storageRef 属性,也会启用会话持久性。有关 httpSession 和 httpSessionDatabase 元素的详细信息,请参阅 在 server.xml 文件中配置元素。
例如,可以创建名称为 ${shared.config.dir}/httpSessionPersistence.xml 的文件,如下所示:<server description="Demonstrates HTTP Session Persistence Configuration"> <featureManager> <feature>sessionDatabase-1.0</feature> <feature>servlet-3.0</feature> </featureManager> <httpEndpoint id="defaultHttpEndpoint" host="*" httpPort="${httpPort}"> <tcpOptions soReuseAddr="true"/> </httpEndpoint> <fileset id="DerbyFiles" includes="*.jar" dir="${shared.resource.dir}/derby/client"/> <library id="DerbyLib" filesetRef="DerbyFiles"/> <jdbcDriver id="DerbyDriver" libraryRef="DerbyLib"/> <dataSource id="SessionDS" jdbcDriverRef="DerbyDriver" jndiName="jdbc/sessions"> <properties.derby.client user="user1" password="password1" databaseName="${shared.resource.dir}/databases/SessionDB" createDatabase="create"/> </dataSource> <httpSessionDatabase id="SessionDB" dataSourceRef="SessionDS"/> <httpSession storageRef="SessionDB" cloneId="${cloneId}"/> <application id="test" name="test" type="ear" location="${shared.app.dir}/test.ear"/> </server>
注: 配置多个服务器以将会话数据持久存储到同一个数据库时,这些服务器必须共享同一项会话管理配置。不支持任何其他配置。例如,不可能是一个服务器使用多行模式,而另一个服务器使用单行模式。最佳实践: 如果会话亲缘关系对您的应用程序很重要,请显式地为每个服务器定义一个唯一的克隆标识。这样,您就不必依赖于服务器所生成的缺省克隆标识,并且您可以确保克隆标识的值永不更改。 - 在每个服务器中包括共享会话管理配置。例如,为名称为 s1 和 s2 的服务器实例创建两个 server.xml 文件,如下所示:
- ${wlp.user.dir}/servers/s1/server.xml
- ${wlp.user.dir}/servers/s2/server.xml
<server description="Example Server"> <include location="${shared.config.dir}/httpSessionPersistence.xml"/> </server>
请参阅 在配置文件中使用 include 元素。
- 在每个服务器的 bootstrap.properties 文件中指定唯一变量。
- ${wlp.user.dir}/servers/s1/bootstrap.properties
httpPort=9081 cloneId=s1
- ${wlp.user.dir}/servers/s2/bootstrap.properties
httpPort=9082 cloneId=s2
- ${wlp.user.dir}/servers/s1/bootstrap.properties
- 启动服务器之前,请为会话持久性创建表。
- 如果要更改缺省行大小、表名或表空间名称,请参阅 在 server.xml 文件中配置元素,以了解有关 httpSessionDatabase 元素的详细信息。
如果服务器是安装在其中一个分布式操作系统上,那么不需要执行其他操作。服务器会自动创建表。
- 如果服务器正在为会话持久性使用 DB2®,那么可以增加页大小以优化将大量数据写入数据库的性能。
- 使主管 Liberty 服务器的所有机器的系统时钟同步。如果系统时钟不同步,那么可能会使会话过早地失效。
- 可选: 必要时,在 Liberty 概要文件中将 HTTP 会话和安全性集成在一起。缺省情况下,在启用了安全性的受保护资源中创建和访问会话之后,只有该会话的始发所有者可以访问该会话。缺省情况下,会启用会话安全性(安全性集成)。
- 可选: 必要时,安装和配置 Web 服务器插件以将请求路由到您所配置的每个服务器。只有在插件配置指定与服务器配置中所定义克隆标识匹配的克隆标识时,才会保留会话亲缘关系。

信息中心的条款和条件 | 反馈

http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twlp_admin_session_persistence
文件名:twlp_admin_session_persistence.html