您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關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;
創建weblogic用戶,并賦予對weblogic數據庫中所有表的所有權限,賬號密碼為weblogic,該賬戶可以從任何主機連接服務器
grant all on weblogic.* to 'weblogic'@'%' identified by 'weblogic';
如下圖,受管服務器app1和app2,同屬于一個集群中,關于負載均衡的集群配置,可以參考之前的文章。
<!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>
我們看一下數據庫,已經將Session信息寫入到數據庫中,這樣就做到了共享Session了。
關于WebLogic中怎么通過數據庫配置Session共享就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。