成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

session過期時間設(shè)置說明

session 過期時間設(shè)置說明一. 系統(tǒng)session 配置說明針對承保(prpall)、雙核(undwrt)系統(tǒng)中,有兩個配置文件可以設(shè)置session 的過期時間 分別是web.xml 和we

session 過期時間設(shè)置說明

一. 系統(tǒng)session 配置說明

針對承保(prpall)、雙核(undwrt)系統(tǒng)中,有兩個配置文件可以設(shè)置session 的過期時間 分別是web.xml 和weblogic.xml

Web.xml 中配置

60

時間單位是一分鐘,并且只能是整數(shù),如果是零或負(fù)數(shù),那么會話就永遠(yuǎn)不會超時。 此例表示Session 將在60分鐘后過期

weblogic.xml 中設(shè)置的TimeoutSecs 屬性值。

Weblogic.xml 中配置

TimeoutSecs

1800

時間單位是一秒鐘,表示1800秒后失效。

1. 如果兩個配置文件中都有配置,且Weblogic.xml 中配置的秒數(shù)必須可以被60整除,(如60,120等) 。則按照時間最小的那個為準(zhǔn)。

2. 如果兩個配置文件中都有配置, 且Weblogic.xml 中配置的秒數(shù)必須不可以被60整除(如,45,90等)。則以web.xml 設(shè)置的時間為準(zhǔn)。

3. 如果web.xml 文件中沒有設(shè)置,且Weblogic.xml 中有配置。則按照Weblogic.xml 的設(shè)置為準(zhǔn)。

4. 為保證session 的唯一性,在weblogic 環(huán)境下,建議只在weblogic.xml 中設(shè)置。防止出現(xiàn)沖突。

,

二. 疑問

1. web.xml,weblogic.xml 同時配置時,為什么會是以時間小的為準(zhǔn)? 暫時無解。

2. 對應(yīng)的weblogic.xml 必須配置為分鐘的整數(shù)倍?

如web=2m weblogic=90s,最終為以web 為準(zhǔn)。

web=3m weblogic=120s 以 weblogic為準(zhǔn)

暫時無解。

3. 關(guān)于“WEB-INF/config/appconfig/SysConstConfig.xml” 中的session 時效時間。 從目前情況看, SysConstConfig.xml 這個應(yīng)該沒有使用;那么就是 web.xml 與weblogic.xml 這兩個的配置用誰的問題了。

按網(wǎng)上說法,對應(yīng)的優(yōu)先級應(yīng)該是:自定義xml 配置的session>web.xml>weblogic.xml;個人理解為:自定義的配置最高的原因是因為,我們程序?qū)崿F(xiàn)判斷session 時去讀取了這個時間;對于web.xml>weblogic.xml,從上述的測試過程中發(fā)現(xiàn)并不是如此。

三. 配置session 方式

WebLogic 如何設(shè)置session 超時時間

1 web.xml

設(shè)置WEB 應(yīng)用程序描述符web.xml 里的元素。這個值以分鐘為 單位,并覆蓋weblogic.xml 中的TimeoutSecs 屬性

54

此例表示Session 將在54分鐘后過期

當(dāng)設(shè)置為-2,表示將使用在weblogic.xml 中設(shè)置的

TimeoutSecs 這個屬性值。

當(dāng)設(shè)置為-1,表示Session 將永不過期,而忽略在

weblogic.xml 中設(shè)置的TimeoutSecs 屬性值。

該屬性值可以通過console 控制臺來設(shè)置

2 weblogic.xml

設(shè)置WebLogic 特有部署描述符weblogic.xml 的元素的 TimeoutSecs 屬性。這個值以秒為單位

TimeoutSecs

3600

,

默認(rèn)值是3600秒

3,jsp 中控制

session.setmaxinactiveinterval(7200);

session 是默認(rèn)對象, 可以直接引用, 單位秒s

4,servlet 中控制

session.setmaxinactiveinterval(7200);

單位秒s

在weblgoic 的console 中:xxDomain ->Servers->xxServer->Protocols->HTTP 中有一個關(guān)于Post Timeout的配置,但這個參數(shù)一般使用默認(rèn)值即可

一般是通過Services-->JDBC-->Connection Pools-->MyConnection(你所建立的連接池名) -->Configration-->Connections 里的Inactive Connection Timeout這個參數(shù)來設(shè)置的,默認(rèn)的為0,表示連接時間無限長。你可以設(shè)一個時間值,連接超過這個時間值,它會把連接強(qiáng)制放回連接池

CompleteMessageTimeout="480" IdleConnectionTimeout="600"

ListenAddress="" ListenPort="7001" Name="myserver"

NativeIOEnabled="true" ReliableDeliveryPolicy="RMDefaultPolicy"

ServerVersion="8.1.4.0">

是否IdleConnectionTimeout 參數(shù)

看連接池中高級選項內(nèi)的Inactive Connection Timeout和Connection Reserve Timeout時多少, 把這兩項設(shè)大些試試

如果在兩個文件中同時設(shè)置了超時時間,則會以web.xml 中為準(zhǔn)。

所以在weblogic 環(huán)境中,最好將web.xml 中關(guān)于超時的設(shè)置刪掉,保持唯一性。

如果使用WEBLOGIC 作為應(yīng)用服務(wù)器,設(shè)置SESSION 超時時間會選擇在WEBLOGIC 的控制臺設(shè)定。實際上,WEBLOGIC 是將超時設(shè)定保存在WEB-INF 下的weblogic.xml 中,格式如下:

TimeoutSecs

7200

param-value 中的數(shù)值就是超時時間,單位為秒。在設(shè)置完這個參數(shù)后,會發(fā)現(xiàn)超時時間并一定起效。這是為什么呢?

原來在WEB-INF 下還有一個配置文件web.xml ,里面同樣會有一段設(shè)置session ,格式如下:

,

30

session-timeout 中的值也是超時時間,單位為分鐘。

如果在兩個文件中同時設(shè)置了超時時間,則會以web.xml 中為準(zhǔn)。

所以在weblogic 環(huán)境中,最好將web.xml 中關(guān)于超時的設(shè)置刪掉,保持唯一性。 這也是發(fā)現(xiàn)了問題后,多次實驗后發(fā)現(xiàn)的。

以下問題:

ueue: ‘billproxyqueue ’ has been busy for “727″ seconds working on the request “Http Request: /bill/y

nQueryPublic.go ”, which is more than the configured time (StuckThreadMaxTime) of “600″ seconds.>

一看明顯是連接超時, 導(dǎo)致的錯誤.

程序問題, 是不是程序中沒有關(guān)閉連接

如果程序沒問題, 則是weblogic 的StuckThreadMaxTime 設(shè)置過小而引起的, 一般weblogic server 的StuckThreadMaxTime 默認(rèn)參數(shù)是600s, 即10分鐘, 如果并發(fā)量過大, 而導(dǎo)致等待處理過多, 導(dǎo)致系統(tǒng)不停的增加線程,造成線程阻塞,你可以把該參數(shù)設(shè)置大點這個是稍微調(diào)大StuckThreadMaxTime 的參數(shù)即可.

看線程數(shù)設(shè)置, 可適當(dāng)增加線程數(shù),這個在WLS 控制臺中可以調(diào)整

四. 關(guān)于session 通過 在weblgoic 的console 中配置的補(bǔ)

充:

在weblogic10R3 中配置方法:

登錄console 之后,部署>選擇對應(yīng)的應(yīng)用(如 undwrt)>配置>改完后保存,會另存為其他的xml 文件,如下圖流程。

,

五. s ession 與cookie 的詳細(xì)說明

具體來說cookie 機(jī)制采用的是在客戶端保持狀態(tài)的方案,而session 機(jī)制采用的是在服務(wù)器端保持狀態(tài)的方案

,

同時我們也看到,由于采用服務(wù)器端保持狀態(tài)的方案在客戶端也需要保存一個標(biāo)識,所以session 機(jī)制可能需要借助于cookie 機(jī)制來達(dá)到保存標(biāo)識的目的,但實際上它還有其他選擇。

cookie 的內(nèi)容主要包括:名字,值,過期時間,路徑和域。

其中域可以指定某一個域比如.google.com ,相當(dāng)于總店招牌,比如寶潔公司,也可以指定一個域下的具體某臺機(jī)器比如www.google.com 或者froogle.google.com ,可以用飄柔來做比。

路徑就是跟在域名后面的URL 路徑,比如/或者/foo等等,可以用某飄柔專柜做比。 路徑與域合在一起就構(gòu)成了cookie 的作用范圍。

如果不設(shè)置過期時間,則表示這個cookie 的生命期為瀏覽器會話期間,只要關(guān)閉瀏覽器窗口,cookie 就消失了。這種生命期為瀏覽器會話期的 cookie被稱為會話cookie 。會話cookie 一般不存儲在硬盤上而是保存在內(nèi)存里,當(dāng)然這種行為并不是規(guī)范規(guī)定的。如果設(shè)置了過期時間,瀏覽器就會把cookie 保存到硬盤上,關(guān)閉后再次打開瀏覽器,這些cookie 仍然有效直到超過設(shè)定的過期時間。

存儲在硬盤上的cookie 可以在不同的瀏覽器進(jìn)程間共享,比如兩個IE 窗口。而對于保存在內(nèi)存里的cookie ,不同的瀏覽器有不同的處理方式。對于IE ,在一個打開的窗口上按Ctrl-N (或者從文件菜單)打開的窗口可以與原窗口共享,而使用其他方式新開的IE 進(jìn)程則不能共享已經(jīng)打開的窗口的內(nèi)存cookie ;對于Mozilla Firefox0.8,所有的進(jìn)程和標(biāo)簽頁都可以共享同樣的cookie 。一般來說是用javascript 的window.open 打開的窗口會與原窗口共享內(nèi)存cookie 。瀏覽器對于會話cookie 的這種只認(rèn)cookie 不認(rèn)人的處理方式經(jīng)常給采用session 機(jī)制的web 應(yīng)用程序開發(fā)者造成很大的困擾。

[經(jīng)典的語錄]

下面就是一個goolge 設(shè)置cookie 的響應(yīng)頭的例子

HTTP/1.1 302 Found

Location: http://www.google.com/intl/zh-CN/

Set-Cookie:

PREF=ID=0565f77e132de138:NW=1:TM=1098082649:LM=1098082649:S=KaeaCFPo49RiA_d8; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com

Content-Type: text/html

到時候我們的域就要設(shè)置為domain=.*****.cn

path=/

session 機(jī)制是一種服務(wù)器端的機(jī)制,服務(wù)器使用一種類似于散列表的結(jié)構(gòu)(也可能就是使用散列表)來保存信息。

四、理解session 機(jī)制

session 機(jī)制是一種服務(wù)器端的機(jī)制,服務(wù)器使用一種類似于散列表的結(jié)構(gòu)(也可能就是使用散列表)來保存信息。

,

當(dāng)程序需要為某個客戶端的請求創(chuàng)建一個session 的時候,服務(wù)器首先檢查這個客戶端的請求里是否已包含了一個session 標(biāo)識 - 稱為session id,如果已包含一個session id則說明以前已經(jīng)為此客戶端創(chuàng)建過session ,服務(wù)器就按照session id把這個session 檢索出來使用(如果檢索不到,可能會新建一個),如果客戶端請求不包含session id,則為此客戶端創(chuàng)建一個session 并且生成一個與此session 相關(guān)聯(lián)的session id,session id的值應(yīng)該是一個既不會重復(fù),又不容易被找到規(guī)律以仿造的字符串,這個session id將被在本次響應(yīng)中返回給客戶端保存。

保存這個session id 的方式可以采用cookie ,這樣在交互過程中瀏覽器可以自動的按照規(guī)則把這個標(biāo)識發(fā)揮給服務(wù)器。一般這個cookie 的名字都是類似于 SEEESIONID,而。比如weblogic 對于web 應(yīng)用程序生成的 cookie,

J SESSION ID=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764,它的名字就是J SESSION ID 。

由于cookie 可以被人為的禁止,必須有其他機(jī)制以便在cookie 被禁止時仍然能夠把session id 傳遞回服務(wù)器。經(jīng)常被使用的一種技術(shù)叫做URL 重寫,就是把session id 直接附加在URL 路徑的后面,附加方式也有兩種,一種是作為URL 路徑的附加信息,表現(xiàn)形式為http://.....

/xxx;jsession id=ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764 另一種是作為查詢字符串附加在URL 后面,表現(xiàn)形式為

這兩種方式對于用戶來說是沒有區(qū)別的,只是服務(wù)器在解析的時候處理的方式不同,采用第一種方式也有利于把session id的信息和正常程序參數(shù)區(qū)分開來。

為了在整個交互過程中始終保持狀態(tài),就必須在每個客戶端可能請求的路徑后面都包含這個session id。

另一種技術(shù)叫做表單隱藏字段。就是服務(wù)器會自動修改表單,添加一個隱藏字段,以便在表單提交時能夠把session id傳遞回服務(wù)器。比如下面的表單

在被傳遞給客戶端之前將被改寫成

value="ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764">

這種技術(shù)現(xiàn)在已較少應(yīng)用,筆者接觸過的很古老的iPlanet6(SunONE應(yīng)用服務(wù)器的前身) 就使用了這種技術(shù)。

實際上這種技術(shù)可以簡單的用對action 應(yīng)用URL 重寫來代替。

,

在談?wù)搒ession 機(jī)制的時候,常常聽到這樣一種誤解“只要關(guān)閉瀏覽器,session 就消失了”。其實可以想象一下會員卡的例子,除非顧客主動對店家提出銷卡,否則店家絕對不會輕易刪除顧客的資料。對session 來說也是一樣的,除非程序通知服務(wù)器刪除一個session ,否則服務(wù)器會一直保留,程序一般都是在用戶做log off 的時候發(fā)個指令去刪除session 。然而瀏覽器從來不會主動在關(guān)閉之前通知服務(wù)器它將要關(guān)閉,因此服務(wù)器根本不會有機(jī)會知道瀏覽器已經(jīng)關(guān)閉,之所以會有這種錯覺,是大部分session 機(jī)制都使用會話cookie 來保存session id,而關(guān)閉瀏覽器后這個session id就消失了,再次連接服務(wù)器時也就無法找到原來的session 。如果服務(wù)器設(shè)置的cookie 被保存到硬盤上,或者使用某種手段改寫瀏覽器發(fā)出的 HTTP請求頭,把原來的session id發(fā)送給服務(wù)器,則再次打開瀏覽器仍然能夠找到原來的session 。

恰恰是由于關(guān)閉瀏覽器不會導(dǎo)致session 被刪除,迫使服務(wù)器為seesion 設(shè)置了一個失效時間,當(dāng)距離客戶端上一次使用session 的時間超過這個失效時間時,服務(wù)器就可以認(rèn)為客戶端已經(jīng)停止了活動,才會把session 刪除以節(jié)省存儲空間。

[寫得太精彩了。感受太深了!]

1、session 在何時被創(chuàng)建

一個常見的誤解是以為session 在有客戶端訪問時就被創(chuàng)建,然而事實是直到某server 端程序調(diào)用 HttpServletRequest.getSession(true)這樣的語句時才被創(chuàng)建,注意如果JSP 沒有顯示的使用 <@page session="false"> 關(guān)閉session ,則JSP 文件在編譯成Servlet 時將會自動加上這樣一條語句HttpSession session =

HttpServletRequest.getSession(true);這也是JSP 中隱含的session 對象的來歷。

由于session 會消耗內(nèi)存資源,因此,如果不打算使用session ,應(yīng)該在所有的JSP 中關(guān)閉它。

2、session 何時被刪除

綜合前面的討論,session 在下列情況下被刪除a. 程序調(diào)用HttpSession.invalidate();或b. 距離上一次收到客戶端發(fā)送的session id時間間隔超過了session 的超時設(shè)置; 或c. 服務(wù)器進(jìn)程被停止(非持久session )

3、如何做到在瀏覽器關(guān)閉時刪除session

嚴(yán)格的講,做不到這一點??梢宰鲆稽c努力的辦法是在所有的客戶端頁面里使用javascript 代碼window.oncolose 來監(jiān)視瀏覽器的關(guān)閉動作,然后向服務(wù)器發(fā)送一個請求來刪除session 。但是對于瀏覽器崩潰或者強(qiáng)行殺死進(jìn)程這些非常規(guī)手段仍然無能為力。

7、開兩個瀏覽器窗口訪問應(yīng)用程序會使用同一個session 還是不同的session

參見第三小節(jié)對cookie 的討論,對session 來說是只認(rèn)id 不認(rèn)人,因此不同的瀏覽器,不同的窗口打開方式以及不同的cookie 存儲方式都會對這個問題的答案有影響。

8、如何防止用戶打開兩個瀏覽器窗口操作導(dǎo)致的session 混亂

這個問題與防止表單多次提交是類似的,可以通過設(shè)置客戶端的令牌來解決。就是在服務(wù)器每次生成一個不同的id 返回給客戶端,同時保存在session 里,客戶端提交表單時必須把

,

這個id 也返回服務(wù)器,程序首先比較返回的id 與保存在 session里的值是否一致,如果不一致則說明本次操作已經(jīng)被提交過了。[對不起你已經(jīng)投過票了!可以這樣來進(jìn)行控制的哦]

八、總結(jié)

session 機(jī)制本身并不復(fù)雜,然而其實現(xiàn)和配置上的靈活性卻使得具體情況復(fù)雜多變。這也要求我們不能把僅僅某一次的經(jīng)驗或者某一個瀏覽器,服務(wù)器的經(jīng)驗當(dāng)作普遍適用的經(jīng)驗,而是始終需要具體情況具體分析。

為什么登陸后, 只要不關(guān)閉瀏覽器,session 就能一直存在? 當(dāng)然session 的數(shù)據(jù)是保存在服務(wù)器上的, 但服務(wù)器是怎么識別這些數(shù)據(jù)都是誰的呢? 答案是sessionid, 每一個瀏覽者都唯一的sessionid, 這就很好的區(qū)分了不同瀏覽者的不同session 了.sessionid 是怎么產(chǎn)生的? 應(yīng)該是第一次訪問服務(wù)器的時候隨即生成的. 假如是111, 然后他的登陸信息是true, 服務(wù)器就知道sessionid 為111已經(jīng)登陸了, 這些信息都存在了服務(wù)器上了. 但當(dāng)瀏覽者繼續(xù)操作的時候, 也就是打開該系統(tǒng)的另一個頁面的時候sessionid 怎么辦? 如何傳遞? 打開另一個頁面的時候其實相當(dāng)于重新訪問系統(tǒng), 如果沒有特殊的處理機(jī)制, 系統(tǒng)會再次重新分配一個

sessionid 的, 這樣的話就失去意義了~!所以sessionid 在第一次訪問后應(yīng)該存在了客戶端. 能寸哪呢? 當(dāng)然, 只能寸在cookie 中了, 這就是為什么關(guān)閉cookie,session 就失去作用了

十三、保存session id的幾種方式

A .保存session id的方式可以采用cookie ,這樣在交互過程中瀏覽器可以自動的按照規(guī)則把這個標(biāo)識發(fā)送給服務(wù)器。

B .由于cookie 可以被人為的禁止,必須有其它的機(jī)制以便在cookie 被禁止時仍然能夠把session id傳遞回服務(wù)器,經(jīng)常采用的一種技術(shù)叫做URL 重寫,就是把session id附加在URL 路徑的后面,附加的方式也有兩種,一種是作為URL 路徑的附加信息,另一種是作為查詢字符串附加在URL 后面。網(wǎng)絡(luò)在整個交互過程中始終保持狀態(tài),就必須在每個客戶端可能請求的路徑后面都包含這個session id。

C .另一種技術(shù)叫做表單隱藏字段。就是服務(wù)器會自動修改表單,添加一個隱藏字段,以便在表單提交時能夠把session id傳遞回服務(wù)器。

二十五、session cookie和session 對象的生命周期是一樣的嗎

當(dāng)用戶關(guān)閉了瀏覽器雖然session cookie已經(jīng)消失,但session 對象仍然保存在服務(wù)器端

二十六、是否只要關(guān)閉瀏覽器,session 就消失了

,

程序一般都是在用戶做log off 的時候發(fā)個指令去刪除session ,然而瀏覽器從來不會主動在關(guān)閉之前通知服務(wù)器它將要被關(guān)閉,因此服務(wù)器根本不會有機(jī)會知道瀏覽器已經(jīng)關(guān)閉。服務(wù)器會一直保留這個會話對象直到它處于非活動狀態(tài)超過設(shè)定的間隔為止。

之所以會有這種錯誤的認(rèn)識,是因為大部分session 機(jī)制都使用會話cookie 來保存session id ,而關(guān)閉瀏覽器后這個session id就消失了,再次連接到服務(wù)器時也就無法找到原來的session 。

如果服務(wù)器設(shè)置的cookie 被保存到硬盤上,或者使用某種手段改寫瀏覽器發(fā)出的HTTP 請求報頭,把原來的session id 發(fā)送到服務(wù)器,則再次打開瀏覽器仍然能夠找到原來的session 。 恰恰是由于關(guān)閉瀏覽器不會導(dǎo)致session 被刪除,迫使服務(wù)器為session 設(shè)置了一個失效時間,當(dāng)距離客戶上一次使用session 的時間超過了這個失效時間時,服務(wù)器就可以認(rèn)為客戶端已經(jīng)停止了活動,才會把session 刪除以節(jié)省存儲空間。

由此我們可以得出如下結(jié)論:

關(guān)閉瀏覽器,只會是瀏覽器端內(nèi)存里的session cookie消失,但不會使保存在服務(wù)器端的session 對象消失,同樣也不會使已經(jīng)保存到硬盤上的持久化cookie 消失。

二十七、打開兩個瀏覽器窗口訪問應(yīng)用程序會使用同一個session 還是不同的session

通常session cookie是不能跨窗口使用的,當(dāng)你新開了一個瀏覽器窗口進(jìn)入相同頁面時,系統(tǒng)會賦予你一個新的session id,這樣我們信息共享的目的就達(dá)不到了。

此時我們可以先把session id 保存在persistent cookie 中(通過設(shè)置session 的最大有效時間) ,然后在新窗口中讀出來,就可以得到上一個窗口的session id 了,這樣通過session cookie 和persistent cookie的結(jié)合我們就可以實現(xiàn)了跨窗口的會話跟蹤。

2.cookies 的屬性有:Domain(域) :哪個站點發(fā)的哪個站點拿走

Expires:是否過期

Haskeys:是否包含關(guān)鍵

path:存放的路徑

secure:是否安全

注:---cookies 的設(shè)置在 sever端設(shè)置,路徑與域一起構(gòu)成cookie 的作用范圍

? 這個是什么意思的???為什么會是在服務(wù)器端進(jìn)行設(shè)置的呢?

---若不設(shè)置過期時間,則表示這個cookie 的生命期為瀏覽器會話期間,關(guān)閉瀏覽器窗口,cookie 就消失。這種生命期為瀏覽器會話期的cookie 被稱為會話cookie 。會話cookie 一般不存儲在硬盤上而是保存在內(nèi)存里,當(dāng)然這種行為并不是規(guī)范規(guī)定的。若設(shè)置了過期時間,瀏覽器就會把cookie 保存到硬盤上,關(guān)閉后再次打開瀏覽器,這些cookie 仍然有效

標(biāo)簽: