国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

交易,提交以及安全性

2019-11-18 15:07:13
字體:
來源:轉載
供稿:網友

  作者:Peter Holditch


發生問題的情形是這樣的,有兩個EJB組件分布在兩臺不同的服務器上。當在服務器1上的Bean 1在JTA交易背景下執行時,調用了服務器2上的Bean 1,此時,交易擴展到了服務器2上。而當Bean1的方法結束后,交易就被提交。
當交易提交后,事實上交易就被終止了。隨之而來的是含義模糊的異常消息:javax.transaction.HeuristicMixedException。由于這種情況多次發生,我想我應該將這篇文章貢獻出來,以便告訴大家這是怎么回事。

委婉一點說:在交易的世界里,交易治理器不愿意表現得太消極,假如它們認為已經到了世界末日,那么它們就不再從事多余的工作,因為那樣有可能干擾系統治理員。它們只是平靜地表示有一個“heuristic outcom”結果產生了。這意味著您精心組織的ACID交易由于潛在的數據不一致已經結束了,您最好去檢查一下您的數據庫。換句話說:世界末日已經到了。

這樣解釋可能有點不著邊際,讓我們看看這里究竟發生了什么事情。

調用Bean1會啟動一個交易,并與控制線程相聯系,而且會波及數據庫的更新以及類似的操作。調用Bean2,將導致請求由服務器1流向服務器2。交易的轉移一般伴隨著RMI請求。通常,在WLS中,服務器到服務器之間的通訊是通過T3協議完成的。利用T3的好處之一就是能夠將有關交易請求的信息附加上去。這樣,在內部,兩個WebLogic實例已將交易的相關信息作了交換,它們都能夠以單獨的身份參與、以及隨后提交或者終止交易。

題外話

關于這一點,我們有必要說一點題外的話。最新版本WLS 7.0是完全的J2EE 1.3認證版本,除去其它之外,它要求必須支持EJB2.0。這反過來要求應用服務器必須經由RMI/IIOP進行互操作。IIOP協議和T3很相象,答應諸如活動交易這樣的上下文信息與方法調用一起被傳送過去。因此,在WLS 7.0中,同樣的情形也會發生,很可能一個服務器是WLS實例,而另一個是其它的應用服務器(盡管我不知道您為什么要這么做-但我偏向于這么想)。讓我們回到正題上吧…

到現在為止,我還沒有提到有關安全的問題。客戶端發起與服務器1的連接請求后,在某處調用InitialContext時需要將用戶名和口令傳送過去。當Bean1的方法被調用時,EJB容器會檢查該登錄用戶是否有執行此方法的權限。同理,服務器2的EJB容器在訪問Bean2的方法之前會做同樣的檢查。這意味著安全ID會和交易ID一起在交易過程中傳送,這是T3協議的另外一個能力,而這也剛好是EJB2.0 對容器互操作性的另一個要求-將用戶的身份證實通過IIOP連接傳送給調用CSIv2的協議。WLS 7.0 也支持這個功能。

交易內容、用戶ID伴著請求一起從服務器1傳送到服務器2,并在那兒執行,直到結果返回。到現在為止,一切都好。現在,Bean1返回到客戶端,假如交易是容器治理的(Container-managed),則容器會調用提交(commit)。這就到了交易協調者(本例為服務器1中的JTA子系統的一部分)工作的時候了,它要將交易的預備階段和提交階段進行同步。此時,它會發現服務器2也是交易的參與者,因而會發送信息給服務器2要求進行兩階段提交中的預備階段。恰在此時,問題來了。這個調用無法由客戶端代理完成,相反,是由JTA子系統發起的。那么,在線路上傳送的是哪一個安全ID呢?事實上,只能由WebLogic的“system”用戶代理執行預備階段的工作。假如任何用戶,張三,李四等都可以隨機地對交易進行預備或提交,那將是相當嚴重的安全缺陷,因此,使用系統ID避免了這個安全漏洞。我們再看一眼WLS 6對安全模式所做的強化工作(這一點在WLS 7中已被進一步鞏固)。在版本6中,假如兩個服務器擁有相同的系統口令,這兩個服務器可以相互信任。沒有任何信任度會超過系統用戶之間的相互信任,因此,要使預備(包括隨后的提交)階段的工作繼續進行,兩個服務器必須擁有相同的系統口令。

回到新聞組…

作為結論,每當這個問題在新聞組中出現(記住,??這是我們開始的地方),解決方案就是確保所有參加交易的WLS實例都有相同的相同口令。需要提請注重的是,交易可能在不知不覺中就發生了,如,當您向遠程JMS隊列發送一條消息,JMS子系統就有可能代理您發起一個交易。記住,下次看見HeuristicMixedException,一定別忘了檢查您的系統口令!

參考資料

l WebLogic Server交易新聞組:

News://newsgroups.bea.com/weblogic.developer.interest.transaction

Or

http://newsgroups.bea.com/cgi-bin/dnewsweb?cmd=xover&group=weblogic.developer.interest.transaction&utag=.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日照市| 香港| 广宗县| 滨州市| 巴南区| 伊宁县| 石林| 苍南县| 托里县| 越西县| 西藏| 彭水| 沁水县| 邢台市| 定西市| 巧家县| 明星| 恩平市| 霍山县| 汉中市| 沾益县| 长垣县| 阜新| 金山区| 金乡县| 鲜城| 临江市| 蒙阴县| 盱眙县| 屏边| 巩留县| 龙海市| 鄂伦春自治旗| 宁陵县| 平潭县| 巴楚县| 临清市| 龙门县| 红原县| 裕民县| 秀山|