日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

oracle不同session共享变量,SpringMVC使用oracle配置session共享

發布時間:2023/12/20 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle不同session共享变量,SpringMVC使用oracle配置session共享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡述

由于開發是單機項目,但是到了配置負載均衡的集群中就發生了問題,使用賬號登錄后又跳回主頁面。

我分析了原因是負載均衡配置的跳轉是每次訪問都會切換服務,所以在A機器登錄后,再次訪問B機器找不到有登錄狀態的session,而我的過濾器里面配置了不登錄就會跳到首頁,所以在B機器上給跳回了首頁,這樣就會一直登陸失敗。

解決辦法就是配置session共享,看了大多數的session共享都是用的Redis做的,但是本著不增加項目架構復雜度的想法,便使用了本身的項目數據庫–oracle。

使用了spring提供的session共享方案,spring-session。

spring-session的Github地址:https://github.com/spring-projects/spring-session

數據庫表

使用JDBC做session共享需要在對應庫中增加表,里面包含了各種庫的對應的表信息,可參考: https://github.com/spring-projects/spring-session/tree/master/spring-session-jdbc/src/main/resources/org/springframework/session/jdbc

這里是2.x版本的sql,如果是1.x版本是沒有PRIMARY_ID字段的,要在下面maven依賴中選擇對應的版本,不然運行報錯。

CREATE TABLE SPRING_SESSION (

PRIMARY_ID CHAR(36) NOT NULL,

SESSION_ID CHAR(36) NOT NULL,

CREATION_TIME NUMBER(19,0) NOT NULL,

LAST_ACCESS_TIME NUMBER(19,0) NOT NULL,

MAX_INACTIVE_INTERVAL NUMBER(10,0) NOT NULL,

EXPIRY_TIME NUMBER(19,0) NOT NULL,

PRINCIPAL_NAME VARCHAR2(100 CHAR),

CONSTRAINT SPRING_SESSION_PK PRIMARY KEY (PRIMARY_ID)

);

CREATE UNIQUE INDEX SPRING_SESSION_IX1 ON SPRING_SESSION (SESSION_ID);

CREATE INDEX SPRING_SESSION_IX2 ON SPRING_SESSION (EXPIRY_TIME);

CREATE INDEX SPRING_SESSION_IX3 ON SPRING_SESSION (PRINCIPAL_NAME);

CREATE TABLE SPRING_SESSION_ATTRIBUTES (

SESSION_PRIMARY_ID CHAR(36) NOT NULL,

ATTRIBUTE_NAME VARCHAR2(200 CHAR) NOT NULL,

ATTRIBUTE_BYTES BLOB NOT NULL,

CONSTRAINT SPRING_SESSION_ATTRIBUTES_PK PRIMARY KEY (SESSION_PRIMARY_ID, ATTRIBUTE_NAME),

CONSTRAINT SPRING_SESSION_ATTRIBUTES_FK FOREIGN KEY (SESSION_PRIMARY_ID) REFERENCES SPRING_SESSION(PRIMARY_ID) ON DELETE CASCADE

);

Maven依賴

這里對應的找到2.x版本的依賴,如果沒有maven,要引入如下jar:spring-jdbc、spring-session-core、spring-context

org.springframework.sessiongroupId>

spring-session-jdbcartifactId>

2.0.2.RELEASEversion>

dependency>

application.xml配置

bean>

class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

bean>

web.xml

spring session通過自定義一個filter,通過filter職責鏈將用自己定義的request替換httpservletrequest,從而使用自己httpsession。配置一下Filter,把他放在最前面,使其優先執行

springSessionRepositoryFilterfilter-name>

org.springframework.web.filter.DelegatingFilterProxyfilter-class>

filter>

springSessionRepositoryFilterfilter-name>

/*url-pattern>

filter-mapping>

總結

整和共享session步驟:增加數據庫表,添加依賴,配置spring的xml,增加過濾器讓request獲取spring-session-jdbc中的session。

整合之后,可以登錄到項目中,并在數據庫的SPRING_SESSION、SPRING_SESSION_ATTRIBUTES表中看到相應的信息,而session存活時間也與原來相同,不影響其他邏輯。

參考

官方文檔

XML配置spring session jdbc實現session共享

總結

以上是生活随笔為你收集整理的oracle不同session共享变量,SpringMVC使用oracle配置session共享的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。