WebLogic 通过数据库的方式实现Session共享的配置

     1. 配置准备

1) 要配置JDBC的方式复制Session,主要为下面三个步骤

(1)在数据库中创建表

(2)创建对数据库具有读/写权限的连接池

(3)在weblogic.xml部署描述符中配置会话持久性

2) 配置会话的持久性的示例如下:

<session-descriptor>
        <persistent-store-type>jdbc</persistent-store-type>
        <persistent-store-pool>MYSQL</persistent-store-pool>
        <persistent-store-table>wl_servlet_sessions</persistent-store-table>
</session-descriptor>

可选参数如下。

① memory--禁用持久性会话存储。

② replicated--与memory 相同,但会话数据将在集群服务器之间复制。

③ replicated_if_clustered--如果Web应用程序部署在集群服务器上,则按有效的persistentstore-type 复制;否则按默认值memory复制。

④ sync-replication-across-cluster--复制将在集群内同步发生。

⑤ async-replication-across-cluster--复制将在集群内异步发生。

3) JDBC持久性表配置必须存在名为WL_SERVLET_SESSIONS,且具有读/写访问权限的数据库表,见下表。


列标题


列数据类型


WL_ID


可变宽度,最多100 个字符


WL_CONTEXT_PATH


WL_IS_NEW


numeric,20 位


WL_ACCESS_TIME


numeric,20 位


WL_SESSION_VALUES


BLOB,非常大


WL_IS_VALID


char,1 个字符


WL_CREATE_TIME


numeric,20 位

在映射到会话持久性连接池的数据库中,需要配置一个名为WL_SERVLET_ SESSIONS的表,该表将包含所有活动会话对象的值。指定有权访问此表的用户,需要对该表具有读/写/插入/删除访问权限才能有效地管理对象。该表需具有以下8列内容。

WL_ID--会话ID,与WL_CONTEXT_PATH一起用做数据库主键。可变宽度字母数字数据类型,最多100个字符。

WL_CONTEXT_PATH--上下文,此列与WL_ID一起用做主键。可变宽度字母数字数据类型,最多100个字符。

WL_IS_NEW--只要Servlet引擎将会话分类为"新"状态,此值就为True。含一个字符的列。

WL_CREATE_TIME--最初创建会话的时间。Numeric 数据类型列,20位。

WL_IS_VALID--Servlet可以访问会话时,该值为True。用于并发访问。含一个字符的列。

WL_SESSION_VALUES--实际会话数据。BLOB列。

WL_ACCESS_TIME--上次访问会话的时间。Numeric数据类型列,20位。

WL_MAX_INACTIVE_INTERVAL--从客户端请求到会话失效之间的时间(秒)。负时间值表明会话永不超时。Integer 数据类型列。


     2. 创建保存Session的数据库和数据表

这里我们选择使用MySQL数据库

创建weblogic数据库,并在weblogic下创建wl_servlet_sessions表

create database weblogic;
SET FOREIGN_KEY_CHECKS=0;  --关闭外键约束
 
-- ----------------------------
-- Table structure for `wl_servlet_sessions`
-- ----------------------------
DROP TABLE IF EXISTS `wl_servlet_sessions`;
CREATE TABLE `wl_servlet_sessions` (
  `wl_id` varchar(100) NOT NULL DEFAULT ‘‘,
  `wl_context_path` varchar(100) NOT NULL DEFAULT ‘‘,
  `wl_is_new` varchar(2) DEFAULT NULL,
  `wl_create_time` bigint(20) DEFAULT NULL,
  `wl_is_valid` varchar(2) DEFAULT NULL,
  `wl_session_values` blob,
  `wl_access_time` bigint(20) DEFAULT NULL,
  `wl_max_inactive_interval` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`wl_id`,`wl_context_path`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3. 创建数据库连接账户

创建weblogic用户,并赋予对weblogic数据库中所有表的所有权限,账号密码为weblogic,该账户可以从任何主机连接服务器

grant all on weblogic.* to ‘weblogic‘@‘%‘ identified by ‘weblogic‘;

4. 配置weblogic集群服务器

如下图,受管服务器app1和app2,同属于一个集群中,关于负载均衡的集群配置,可以参考之前的文章。

5. 配置JDBC数据源

6. 配置web项目的weblogic.xml文件

<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
        <session-descriptor>
                <persistent-store-type>jdbc</persistent-store-type>
                <persistent-store-pool>MYSQL</persistent-store-pool>
                <persistent-store-table>wl_servlet_sessions</persistent-store-table>
        </session-descriptor>
</weblogic-web-app>

7. 部署项目启动后访问

8. 查看数据库进行验证

我们看一下数据库,已经将Session信息写入到数据库中,这样就做到了共享Session了。

时间: 2024-12-31 20:10:43

WebLogic 通过数据库的方式实现Session共享的配置的相关文章

java项目使用memcache实现session共享+session基础

本文章主要目的是配置session共享,为了巩固基础,捎带介绍了一些基础知识(网上搜索后觉得最全面的特引过来,节省时间),基础扎实的可以自动忽略. 基础篇: 1.了解java web中的session与cookie. 2.如何封装request和session这两个web项目中最常用的对象(以解决乱码为例) 进阶篇: 3.利用memcache实现session共享 在开发过程中,为了缓解访问压力,往往需要配置负载均衡,也就是相同的项目放在多台机子上,保证一台机子挂了,网站仍然可以正常访问,除了需

Nginx+Tomcat+Memcached集群Session共享

提供给大家整合实例: http://download.csdn.net/detail/zld1987/9577962 cookie是怎样工作的? 例如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是"Michael Jordan",同时还对所创建的Cookie的属性如path.domain.expires等进行了指定. Set-Cookie:login=Michael Jordan;path

【转】Nginx+Tomcat+Memcached集群Session共享

cookie是怎样工作的? 例 如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名 是“Michael Jordan”,同时还对所创建的Cookie的属性如path.domain.expires等进行了指定. Set-Cookie:login=Michael Jordan;path=/;domain=msn.com; expires=Monday,01-Mar-99 00:00:01 GMT 上面这个H

Nginx+Tomcat7(tomcat6)+Memcached集群Session共享

Nginx+Tomcat7+Memcached集群Session共享 原理: 主要是利用memcached-session-manager(下面简称msm)开源tomcat插件改变tomcat原始的session存储机制,将session的存储放到分布式缓存memcache中,从而实现对session的共享. 下载 1.      下载nginx 2.      下载tomcat7 (本文介绍的是tomcat7的session共享,如果是tomcat6,配置是不成功的,需要更换其中的jar包,m

Tomcat自带的Session共享方案实施记录

一般来说,在多个tomcat集群业务中,session会话共享是必须的需求,不然前端nginx转发过来的请求不知道之前请求在哪台tomcat节点上,从而就找不到session以至于最终导致请求失败.要实现tomcat session共享有多种方案,今天介绍下使用tomcat自带的cluster方式,在多个tomcat节点间自动实时复制session信息,配置起来很简单.tomcat自带的这种session共享方案,对于规模较小的tomcat集群来说够用了,但这个方案的效率比较低,在大并发下表现并

解决Session共享

举例两种方式实现Session共享问题 方法一:Nginx通过负载均衡IP地址固定绑定,解决Session共享 1. 修改Nginx.conf文件 2. 编写一个servlet并启动两个tomcat模拟session共享失败状态 @WebServlet("/NginxSessionServlet") public class NginxSessionServlet extends HttpServlet { @Override protected void doPost(HttpSer

nginx六 之Session共享

背景 使用反向代理服务器会引起session sticky(会话粘贴),意思是用户发起的多次请求被分发到多台服务器,请求的session没有被共享,解决这个问题的方案有很多种,在考虑性  能.稳定以及自身架构的基础上,决定采取redis缓存会话实现session共享. 配置 tomcat配置 1.修改context.xml,在<Context>节点末尾内添加如下配置: <Valve className="com.radiadesign.catalina.session.Redi

nginx整合tomcat集群并做session共享----测试案例

最近出于好奇心,研究了一下tomcat集群配置,并整合nginx,实现负载均衡,session共享,写篇记录,防止遗忘.---------菜鸡的自我修炼. 说明:博主采用一个web项目同时部署到两台tomcat下,(tomcat-A,tomca-B),使用nginx做反向代理,按照设置的权值,将请求分发到后台的tomcatA/tomcat-B,并且实现session共享. 配置好本地域名指向:修改host文件:添加 127.0.0.1  www.domain.com.cn 新建项目:tiny-d

nginx tomcat负载均衡 使用redis session共享

环境准备 1.准备一台nginx服务器 ip192.168.1.133 端口81 安装过程: #首先安装依赖: yum -y install gcc-c++ yum -y install pcre pcre-devel yum -y install zlib zlib-devel yum -y install openssl openssl-devel #注意 : 安装nginx必须使用 root 用户安装 #创建一个nginx目录 mkdir /usr/local/src/nginx #进入到