成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Servlet容器中的事務(wù)

開發(fā) 后端
本文介紹Servlet容器中的事務(wù),以及介紹J2EE事務(wù)的四個(gè)屬性定義,分別是原子性,一致性,獨(dú)立性和持久性。

J2EE除了提供了Servlet之外,還提供了大量的其它功能。Servlet開發(fā)者們也許難得使用這些功能,不情愿也沒有時(shí)間用一個(gè)超出所需的大型J2EE服務(wù)器來替換自己的簡(jiǎn)單的Servlet容器。然而,依據(jù)J2EE的模塊化特征,有可能將負(fù)責(zé)特定J2EE功能的小組件整合到Servlet容器里,以此來增強(qiáng)WEB應(yīng)用程序。其中之一就是事務(wù)。有關(guān)J2EE事務(wù)的完整描述,您可以參考Onjava上的其他三篇文章,現(xiàn)在只需知道事務(wù)是資源的操作步驟(例如:數(shù)據(jù)庫(kù)),它由四個(gè)屬性定義,這四個(gè)屬性根據(jù)其首字母濃縮為ACID:

原子性:事務(wù)的操作,或者是全部成功(此時(shí)提交事務(wù)),或者是全部不成功(此時(shí)回滾事務(wù)),謂之為all-or-nothing屬性。一個(gè)事務(wù)應(yīng)該被視為單個(gè)工作單元,在一個(gè)事務(wù)里面絕對(duì)不可能同時(shí)存在完成了的和沒有完成的操作。

一致性:完成了的事務(wù)將資源從一個(gè)有效狀態(tài)轉(zhuǎn)變?yōu)榱硪粋€(gè)有效狀態(tài)。一致性的具體例子有:數(shù)據(jù)庫(kù)的參照完整性和表中的主鍵唯一性。

獨(dú)立性在事務(wù)沒有提交之前,事務(wù)作用的共享資源的改變?cè)谑聞?wù)之外是不可見的。獨(dú)立性確保了不同事務(wù)不會(huì)同時(shí)訪問正在更新的數(shù)據(jù)。

持久性:由事務(wù)提交的改變會(huì)永久存在。

JOTM(Java Open Transaction Manager)是由ObjectWeb協(xié)會(huì)開發(fā)的功能完整的且資源開放的獨(dú)立的事務(wù)管理器。它提供了JAVA應(yīng)用程序的事務(wù)支持,而且與JTA(JAVA事務(wù)API)兼容。您可以在JOTM home page了解到更多的詳細(xì)信息。在TOMCAT或其它Servlet容器整合了JOTM后,JSP和Servlet的開發(fā)者們就可以獲得事務(wù)的優(yōu)勢(shì)輕而易舉的創(chuàng)建更多健壯的web應(yīng)用程序。

為了突出事務(wù)是怎樣增強(qiáng)web應(yīng)用程序的,舉一個(gè)常用的例子,web瀏覽器與客戶端交互的ATM。

ATM 樣例:

情景

此例比較簡(jiǎn)單:一個(gè)客戶想從 ATM 提款,輸入了他的客戶名稱,john_doe;想提款數(shù),$50。如果他的銀行帳戶上有足夠的錢并且在 ATM 機(jī)上有足夠的現(xiàn)金的話,應(yīng)用程序就能給他相當(dāng)數(shù)目的現(xiàn)金,并從銀行帳戶上提出同樣的數(shù)目。否則,操作中斷,并且除出現(xiàn)錯(cuò)誤信息之外,其他都不會(huì)改變。我們無需擔(dān)心安全問題,只是在猜想用戶是否正確授權(quán)。

這是一個(gè)非常簡(jiǎn)單的例子,但是如果不使用事務(wù),用別的方法執(zhí)行起來將會(huì)很難。客戶端操作將會(huì)涉及到兩個(gè)不同的資源:ATM 和客戶銀行帳號(hào)。它們會(huì)自動(dòng)的在應(yīng)用程序設(shè)計(jì)中產(chǎn)生 ACID 問題。例如:如果在 ATM 上操作成功而在銀行帳戶上卻失敗(也許是因?yàn)榻涣魇。蛻魧?huì)取到錢,但是他的帳戶將不會(huì)更新。對(duì)于銀行來說,這就虧大了。更糟的是,如果銀行帳戶更新了,但是由于一個(gè)錯(cuò)誤阻止 ATM 傳送錢,客戶得不到現(xiàn)金,但是帳戶上卻提掉了這筆款。

為了防止出現(xiàn)上述事故,在你的應(yīng)用程序里,你能夠 1) 聯(lián)系兩個(gè)資源,并告知兩者客戶執(zhí)行的所有當(dāng)前操作,2)詢問兩者是否能執(zhí)行操作,3)如果兩者都同意,則請(qǐng)求操作。即使這樣,此方法也不能謂之足夠健壯,因?yàn)椋绻蛻魩羯系腻X在第二步和第三步的時(shí)候被另外一操作提走,提款可能會(huì)失敗,例如,客戶帳戶不能出現(xiàn)逆差。

事務(wù)能使應(yīng)用程序更簡(jiǎn)單更健壯的之處就是:在同一事務(wù)的兩個(gè)資源上執(zhí)行所有的操作的時(shí)候,它將會(huì)解決 ACID 的問題(尤其是原子性)。

【編輯推薦】

  1. Scala語(yǔ)言中的Scala Servlet
  2. 敘述Servlet API的討論
  3. 介紹Servlet容器與Context
  4. Servlet源文件到Class的過程
  5. 詳解Listener監(jiān)聽Http Session
責(zé)任編輯:佚名 來源: 中國(guó)IT實(shí)驗(yàn)室
相關(guān)推薦

2009-07-09 11:27:59

Servlet容器

2009-07-07 16:23:05

Servlet容器

2009-07-08 14:22:36

Servlet容器匹配過程

2009-07-09 15:30:53

Servlet容器會(huì)話跟蹤

2009-07-08 11:17:10

Servlet容器Servlet Con

2009-07-06 16:16:33

Servlet容器工作

2009-05-18 10:43:17

TomcatServletJetty

2009-07-08 15:59:55

doFilter方法

2022-03-31 15:17:04

JavaSocketServlet容器

2013-05-28 13:44:32

Android開發(fā)Android應(yīng)用ijetty

2012-03-21 12:57:29

JavaJettyServlet

2009-07-07 08:46:18

JettyServlet容器

2017-01-19 15:32:36

Java全局事務(wù)本地事務(wù)

2009-07-03 16:53:11

Servlet容器

2019-12-09 15:00:48

TomcatServlet容器

2013-09-02 09:18:59

2020-07-21 14:35:44

Servlet容器ApacheTomcat

2011-04-29 09:15:16

Servlet

2009-06-06 19:25:44

javaServlet基礎(chǔ)結(jié)構(gòu)

2010-05-27 15:05:23

ServletJava
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩成人av在线 | 国产探花在线精品一区二区 | 大久| 欧美寡妇偷汉性猛交 | 亚洲日韩中文字幕一区 | 免费视频二区 | 在线观看中文视频 | 久久丁香| 日本涩涩网 | 9久9久9久女女女九九九一九 | 欧美黄色一区 | 欧美激情网站 | 国产在线一区二区 | 精品在线一区 | 韩日有码 | 久久高潮 | 国产精品久久久久一区二区三区 | 91视视频在线观看入口直接观看 | 欧产日产国产精品视频 | 亚洲精品自在在线观看 | 日韩视频区 | 亚洲成人一区二区在线 | 精品国产不卡一区二区三区 | 久久久国产一区 | 成人一级黄色毛片 | 在线免费观看黄色网址 | 欧美极品视频 | 久久精彩视频 | 三级视频在线观看电影 | 黄色毛片一级 | 亚洲国产乱码 | 日韩手机在线看片 | 国产一级视频在线观看 | 日本黄色大片免费 | 成人免费大片黄在线播放 | 天天操 夜夜操 | 美女黄色在线观看 | 久久久久网站 | 欧美一区二区三区在线观看 | 成人av免费在线观看 | 中文天堂在线观看 |