亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

在SPRING中實(shí)現(xiàn)事務(wù)暫停

系統(tǒng) 2104 0
摘要

Spring框架是一個(gè)流行的基于輕量級(jí)控ò 46;反轉(zhuǎn)容器的Java/J2EE應(yīng)用框架,尤其在數(shù)& #25454;訪問和事務(wù)管理方面的能力是眾? 2;周知的。Spring的聲明性事務(wù)分離可以ò 12;用到任何POJO目標(biāo)對(duì)象,并且包含所? 7;EJB基于容器管理事務(wù)中的已聲明事務(wù) 。后臺(tái)的事務(wù)管理器支持簡(jiǎn)單的基é 10;JDBC的事務(wù)和全功能的基于JTA的J2EE事務(wù)。 ;

這篇文章詳細(xì)的討論了Spring的事務(wù)管? 02;特性。重點(diǎn)是如何在使用JTA作為后臺(tái) ;事務(wù)策略的基礎(chǔ)上讓POJO利用Spring的聲明&# 24615;事務(wù),這也顯示了Spring的事務(wù)服務(wù)可& #20197;無(wú)縫地與J2EE服務(wù)器(如BEA WebLogic Server的事務(wù)協(xié)調(diào)器)的事務(wù)協(xié)調(diào)器進(jìn)行 ;交互,作為EJB CMT傳統(tǒng)事務(wù)分離方式的一個(gè)替代者。
POJO的聲明性事務(wù)

作為Spring聲明性事務(wù)分離方式的樣例? 92;讓我們來(lái)看一下Spring的樣例應(yīng)用PetClinic的 0013;心服務(wù)外觀中的配置:
清單1:
      <bean id="dataSource"><br> class="org.springframework.jndi.JndiObjectFactoryBean"&gt;<br><br><br><property name="jndiName"><br><value>java:comp/env/jdbc/petclinic</value><br></property><br></bean>
      

<bean id="transactionManager"><br> class="org.springframework.transaction.jta.JtaTransactionManager"/&gt;<br><br><bean id="clinicTarget"><br> class="org.springframework.samples.petclinic.jdbc.JdbcClinic"&gt;<br><property name="dataSource"><ref bean="dataSource"></ref><br></property><br><br><bean id="clinic"><br> class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"&gt;<br><property name="transactionManager"><ref bean="transactionManager"></ref><br><property name="target"><ref bean="clinicTarget"></ref><br><property name="transactionAttributes"><br><props><br><prop key="load*">PROPAGATION_REQUIRED,readOnly</prop><br><prop key="store*">PROPAGATION_REQUIRED</prop><br></props><br></property><br></property></property></bean></bean></bean>


他遵循Spring的標(biāo)準(zhǔn)XMLBean定義格式。定義? 2;:
1、一個(gè)DataSource引用,指向一個(gè)JNDI位置—? 12;J2EE服務(wù)器管理下這將從JNDI環(huán)境中獲取&# 29305;定的DataSource。
2、一個(gè)應(yīng)用服務(wù)實(shí)現(xiàn)—這是一個(gè)POJO, ;封裝了業(yè)務(wù)和數(shù)據(jù)訪問邏輯。在這% 324;實(shí)現(xiàn)了應(yīng)用中的Clinic服務(wù)接口。
3、一個(gè)應(yīng)用服務(wù)的事務(wù)代理—這個(gè) 0195;理為目標(biāo)服務(wù)定義了事務(wù)屬性,匹 配特定的方法名模式并為之創(chuàng)建相ò 12;的事務(wù)。在實(shí)際的事務(wù)管理中,代&# 29702;指向一個(gè)PlatformTransactionManager實(shí)現(xiàn)。
注意 :除了顯式的代理定義A 292;Spring還支持自動(dòng)代理機(jī)制和通過Commons Attributes或J2SE 5.0注解實(shí)現(xiàn)源程序級(jí)的元數(shù)據(jù)使用。&# 36825;些可選方法的討論超過了本文的范 ;圍。可以參考Spring的文檔來(lái)了解相關(guān)? 4;節(jié)。


業(yè)務(wù)接口和業(yè)務(wù)實(shí)現(xiàn)是特定于應(yīng)用 0340;并且不需要關(guān)心Spring或者Spring的事務(wù)管 702;。普通Java對(duì)象可以作為服務(wù)的目標(biāo)? 45;象,而且任何普通Java接口可以作為? 1;務(wù)的接口。下面是一個(gè)Clinic接口的示? 63;:
清單2:
      public interface Clinic {
      
Pet loadPet(int id);
void storePet(Pet pet);
...
}



這個(gè)接口的實(shí)現(xiàn)如下顯示,假設(shè)他 0351;用JDBC來(lái)執(zhí)行必要的數(shù)據(jù)訪問。他通$ 807;bean屬性的設(shè)置方法來(lái)獲取JDBC的DataSource;這? 2;上面的配置中的dataSource屬性定義相對(duì)應(yīng)& #12290;
清單3:
      public class JdbcClinic implements 
      

Clinic {

private DataSource dataSource;

public void

setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}

public Pet loadPet(int id) {
try {
Connection con =

this.dataSource.getConnection();
...
}
catch (SQLException ex) {
...
}
}

public void storePet(Pet pet) {
try {
Connection con =

this.dataSource.getConnection();
...
}
catch (SQLException ex) {
...
}
}

...
}



如你所見,代碼相當(dāng)直接。我們使 9992;一個(gè)簡(jiǎn)單的Java對(duì)象,而事務(wù)管理由 107;務(wù)代理來(lái)處理,這個(gè)我們會(huì)在下面& #35752;論。
注意在PetClinic示例應(yīng)用中實(shí)際的基于JDBC? 0;Clinic實(shí)現(xiàn)利用了Spring的JDBC支持類來(lái)避免直 5509;使用JDBC的API。雖然Spring的事務(wù)管理也可 0197;與普通的基于JDBC實(shí)現(xiàn)一起工作,就 521;上面的示例。

定義事務(wù)代理
除了JdbcClinic實(shí)例以外,配置中也定義了& #19968;個(gè)事務(wù)代理。如果愿意這個(gè)代理? 2;暴露的實(shí)際接口也可以顯式定義。 0664;認(rèn)情況下,所有由目標(biāo)對(duì)象實(shí)現(xiàn)的 接口都暴露出來(lái),在這個(gè)例子中就? 59;應(yīng)用的Clinic服務(wù)接口。

從客戶端的觀點(diǎn)來(lái)看,"clinic" bean只是這個(gè)應(yīng)用的Clinic接口的實(shí)現(xiàn)???5143;端不需要知道這會(huì)被一個(gè)事務(wù)代理 所處理。這就是接口的能力:一個(gè)? 52;接的目標(biāo)對(duì)象的引用可以容易的被&# 19968;個(gè)實(shí)現(xiàn)相同接口的代理所代替—在 這兒就是一個(gè)隱式創(chuàng)建事務(wù)的代理z 90;
代理的具體事務(wù)行為會(huì)由為根據(jù)特 3450;的方法或方法命名模式而定義的事 務(wù)屬性來(lái)驅(qū)動(dòng),就像下面的例子所? 34;:
清單3:
      <prop key="load*">PROPAGATION_REQUIRED,readOnly</prop>
      
<prop key="store*">PROPAGATION_REQUIRED</prop>


Key屬性決定代理將為方法提供什么樣 的事務(wù)行為。這個(gè)屬性的最重要部? 98;就是事務(wù)傳播行為。下面是一些可&# 36873;的屬性值:
1、PROPAGATION_REQUIRED -- 支持當(dāng)前的事務(wù),如果不存在就創(chuàng)ó 14;一個(gè)新的。這是最常用的選擇。
2、PROPAGATION_SUPPORTS -- 支持當(dāng)前的事務(wù),如果不存在就不? 51;用事務(wù)。
3、PROPAGATION_MANDATORY -- 支持當(dāng)前的事務(wù),如果不存在就拋? 86;異常。
4、PROPAGATION_REQUIRES_NEW -- 創(chuàng)建一個(gè)新的事務(wù),并暫停當(dāng)前的é 07;務(wù)(如果存在)。
5、PROPAGATION_NOT_SUPPORTED -- 不使用事務(wù),并暫停當(dāng)前的事務(wù)(? 14;果存在)。
6、PROPAGATION_NEVER -- 不使用事務(wù),如果當(dāng)前存在事務(wù)就ü 43;出異常。
7、PROPAGATION_NESTED -- 如果當(dāng)前存在事務(wù)就作為嵌入事務(wù)? 91;行,否則與PROPAGATION_REQUIRED類似。

前6個(gè)事務(wù)策略與EJB的CMT類似,而且使 992;相同的常量名,因此對(duì)EJB開發(fā)人員? 9;說(shuō)是很親切的。第7個(gè)策略PROPAGATION_NESTED是Spring&# 25552;供的一個(gè)變體:他需要事務(wù)管理器 ;(如DataSourceTransactionManager) 提供類似JDBC3.0那樣的保存點(diǎn)API來(lái)嵌套事 1153;行為或者通過
JTA支持嵌套事務(wù)。

事務(wù)屬性中的readOnly標(biāo)識(shí)指示相應(yīng)的事 1153;應(yīng)該作為一個(gè)只讀事務(wù)來(lái)優(yōu)化。這 是一個(gè)優(yōu)化提示:一些事務(wù)策略在? 25;種情況下可以得到很好的性能優(yōu)化&# 65292;如使用ORM工具如Hibernate或TopLink時(shí)避免臟數(shù) 454;檢查(“flush”嘗試)。

在事務(wù)屬性中還有一個(gè)“timeout”選項(xiàng)? 9;定義事務(wù)的超時(shí)秒數(shù)。在JTA中,這個(gè) 屬性會(huì)簡(jiǎn)單地傳遞給J2EE服務(wù)器的事務(wù)& #21327;調(diào)器并被正確地解釋。

使用事務(wù)代理
在運(yùn)行時(shí),客戶端會(huì)取得一個(gè)“clinic&rdquo ;引用并轉(zhuǎn)換為Clinic接口,然后調(diào)用如loadPe t或storePet方法。這就隱式地使用了Spring的? 7;務(wù)代理,通過“事務(wù)解釋器”在目? 31;對(duì)象中注冊(cè);這樣一個(gè)新的事務(wù)就&# 21019;建了,然后具體的工作就會(huì)代理給 ;JdbcClinic的目標(biāo)方法。
圖1示例了一個(gè)使用“建議鏈”并到$ 798;最后目標(biāo)的AOP代理的潛在概念。在? 5;個(gè)示例中,唯一的建議是一個(gè)事務(wù) 5299;釋器用來(lái)包裝目標(biāo)方法的事務(wù)行為 。這是一種用來(lái)在聲明性事務(wù)功能? 79;使用的基于代理的AOP。



Figure 1. An AOP proxy with an advisor chain and a target at the end

例如,一個(gè)PetClinic應(yīng)用的WEB層組件可以執(zhí) ;行ServletContext定位來(lái)獲取Spring WebApplicationContext的引用并且獲取受管理的“clinic&rd quo;BEAN:
清單4:
      WebApplicationContext ctx 
      

=
WebApplicationContexUtils.getWebApplicationContext(servletContext);
Clinic clinic = (Clinic)

ctx.getBean("clinic);

Pet pet = new Pet();
pet.setName("my new cat");

clinic.storePet(pet);


在調(diào)用storePet() 之前,Spring的事務(wù)代理隱式地創(chuàng)建一個(gè) ;事務(wù)。當(dāng)storePet() 調(diào)用返回時(shí),事務(wù)將提交或回滾。? 70;省情況下任何RuntimeException或Error將導(dǎo)致回滾z 90;實(shí)際的提交或回滾可以是可以定義&# 30340;:Spring的事務(wù)屬性支持“回滾規(guī)則” 0340;概念。

例如,我們可以可以引入一個(gè)強(qiáng)制 0340;PetClinicException并且告訴事務(wù)代理在拋出異? 0;時(shí)回滾:
清單5:
      <prop key="load*">PROPAGATION_REQUIRED,readOnly,-PetClinicException</prop>
      
<prop key="store*">PROPAGATION_REQUIRED,-PetClinicException</prop>


這兒也有一個(gè)類似的“提交規(guī)則”? 21;法,指示特定的異常將觸發(fā)一次提&# 20132;。
注意上面示例的顯式定位引用的方 7861;只是一種訪問受Spring管理BEAN的方法的? 4;化,可以用在任何WEB資源如servlet或filter。 2312;構(gòu)建基于Spring自身的MVC框架時(shí),BEAN可以 0452;接被注射到WEB控制器中。當(dāng)然也支y 45;在如Struts, WebWork, JSF, and Tapestry框架中訪問Spring管理BEAN。詳情可以參 2771;Spring的文檔。

PlatformTransactionManager策略

Spring事務(wù)支持的核心接口是org.springframework.transaction.Platf ormTransactionManager。所有Spring的事務(wù)分離功能都會(huì)&# 22996;托給PlatformTransactionManager(傳給相應(yīng)的TransactionDefinition實(shí) 例)來(lái)做實(shí)際的事務(wù)執(zhí)行。雖然PlatformTrans actionManager接口可以直接調(diào)用,但通常應(yīng)用 只需要配置一個(gè)具體的事務(wù)管理器? 82;且通過聲明性事務(wù)來(lái)分離事務(wù)。

Spring提供幾種不同的PlatformTransactionManager實(shí)現(xiàn),分 0026;如下兩個(gè)類別:
1、本地事務(wù)策略—支持單一資源的 0107;務(wù)(通常是單個(gè)數(shù)據(jù)庫(kù)),其包括 org.springframework.jdbc.datasource.DataSourceTransactionManager和 org.springframework.orm.hibernate.HibernateTransactionManager。
2、全局事務(wù)管理—支持可能跨越多 0010;資源的全局事務(wù)。其相應(yīng)的類為org.spri ngframework.transaction.jta.JtaTransactionManager,將事務(wù)委托給遵循JTA& #35268;范的事務(wù)協(xié)調(diào)器(通常為J2EE服務(wù)器&# 65292;但不是強(qiáng)制的)。

PlatformTransactionManager抽象的主要價(jià)值在于應(yīng)用不& #20877;被綁定在特定的事務(wù)管理環(huán)境。? 6;反,事務(wù)策略可以很容易地切換—$ 890;過選擇不同的PlatformTransactionManager實(shí)現(xiàn)類。這就 ;使得應(yīng)用代碼與聲明事務(wù)分離保持 968;致,而不需要考慮應(yīng)用組件所使用& #30340;環(huán)境了。

例如,應(yīng)用的初始版本可能布署在Tom cat上,與單個(gè)Oracle數(shù)據(jù)庫(kù)交互。這可以 041;便地利用Spring的事務(wù)分離特性,只要 6873;擇基于JDBC的DataSourceTransactionManager作為使用的事務(wù) 策略。Spring會(huì)分離事務(wù),而JDBC驅(qū)動(dòng)會(huì)執(zhí) 4892;相應(yīng)的原始JDBC事務(wù)。

相同應(yīng)用的另一個(gè)版本可能會(huì)布署 2312;WebLogic服務(wù)器上,使用兩個(gè)Oracle數(shù)據(jù)庫(kù)。&# 24212;用代碼和事務(wù)分離不需要改變。唯 ;一不同的是選擇作為JtaTransactionManager事務(wù)策略 ;,讓Spring來(lái)分離事務(wù)而WebLogic服務(wù)器的事? 3;協(xié)調(diào)器來(lái)執(zhí)行事務(wù)。

JTA UserTransaction與JTA TransactionManager比較
讓我們來(lái)看一下Spring對(duì)JTA支持的細(xì)節(jié)。&# 34429;然并非經(jīng)常需要考慮這個(gè)細(xì)節(jié)但了 ;解相關(guān)的細(xì)節(jié)還有必要的。對(duì)簡(jiǎn)單 340;用例如前面章節(jié)的示例,標(biāo)準(zhǔn)的JtaTransa ctionManager定義已經(jīng)足夠了,
缺省的Spring JtaTransactionManager設(shè)置會(huì)從標(biāo)準(zhǔn)JNDI位置(J2EE規(guī)范所 定義的java:comp/UserTransaction)獲取JTA的javax.transaction.UserTransaction對(duì) 象。這對(duì)大部分標(biāo)準(zhǔn)J2EE環(huán)境來(lái)說(shuō)已經(jīng)& #36275;夠了。

然而,缺省的JtaTransactionManager不能執(zhí)行事務(wù)? 2;停(也就是說(shuō)不支持PROPAGATION_REQUIRES_NEW和PROPAGATION_NOT_SUP PORTED)。原因就在于標(biāo)準(zhǔn)的JTA UserTransaction接口不支持事務(wù)的暫停和恢復(fù)? 2;而只支持開始和完成新的事務(wù)。

為了實(shí)現(xiàn)事務(wù)的暫停,需要一個(gè)javax.trans action.TransactionManager實(shí)例,他提供了JTA定義的標(biāo)準(zhǔn)& #30340;暫停和恢復(fù)方法。不幸的是,J2EE沒&# 26377;為JTA TransactionManager定義標(biāo)準(zhǔn)的JNDI位置!因此,我們 ;需要使用廠商自己的定位機(jī)制。
清單6:
      <bean id="transactionManager"><br> class="org.springframework.transaction.jta.JtaTransactionManager"&gt;<br><br><br><property name="transactionManagerName"><br><value>vendorSpecificJndiLocation</value><br></property><br></bean>
    



J2EE本質(zhì)上沒有考慮將JTA TransactionManager接口作為公共API的一部分。JTA規(guī)? 39;自身定義了將TransactionManager接口作為容器集 成的想法。雖然這是可以理解的,ê 94;是JTA TransactionManager的標(biāo)準(zhǔn)JNDI位置還是可以增加一定 ;的價(jià)值,特別是對(duì)輕量級(jí)容器如Spring,? 25;樣任何J2EE服務(wù)器就可以用統(tǒng)一的方? 5;來(lái)定位JTA TransactionManager了。

不僅Spring的JtaTransactionManager可以從訪問中獲益, O/R映射工具如Hibernate, Apache OJB, and Kodo JDO也能得到好處,因?yàn)樗麄冃枰贘TA環(huán) ;境中執(zhí)行緩存同步的能力(釋放緩 384;意味著JTA事務(wù)的完成)。這種注冊(cè)? 7;務(wù)同步的能力只有JTA TransactionManager接口才能提供,而UserTransaction是處理 981;了的。因此,這些工具都需要實(shí)現(xiàn)& #33258;己的TransactionManager定位器。

為JTA TransactionManager定義標(biāo)準(zhǔn)的JNDI位置是許多底層軟 ;件供應(yīng)商最期望J2EE實(shí)現(xiàn)的功能。如果 J2EE5.0的規(guī)范制定團(tuán)隊(duì)能夠認(rèn)識(shí)到這個(gè)? 5;性的重要性就太好了。幸運(yùn)地是, 9640;級(jí)J2EE服務(wù)器如WebLogic Server已經(jīng)考慮將JTA TransactionManager作為公共的API包含在擴(kuò)展功能中 。

在WebLogic JTA中實(shí)現(xiàn)Spring的事務(wù)分離
在WebLogic Server中,JTA TransactionManager官方的JNDI位置定義為javax.transaction.TransactionManager 2290;這個(gè)值可以在Spring的JtaTransactionManager中作為“transa ctionManagerName”使用。原則上這樣就可以在WebLog ic"s JTA系統(tǒng)中實(shí)現(xiàn)事務(wù)暫停了,也就是說(shuō)&# 25903;持PROPAGATION_REQUIRES_NEW和PROPAGATION_NOT_SUPPORTED行為。

除了標(biāo)準(zhǔn)的JtaTransactionManager和其支持的通用? 7;置選項(xiàng)外,Spring還提供了一個(gè)專用的WebLo gicJtaTransactionManager適配器來(lái)直接利用WebLogic的JTA擴(kuò)展&# 12290;

在享受自動(dòng)探測(cè)WebLogic的JTA TransactionManager的便利之外,他提供超越標(biāo)準(zhǔn)JTA 的三個(gè)重要特性:
1、事務(wù)命名—暴露出Spring的事務(wù)名給WebLo gic Server,使得Spring事務(wù)在WebLogic的事務(wù)監(jiān)聽器可& #35265;。缺省的,Spring會(huì)使用聲明性事務(wù)的 完整方法名。
2、每事務(wù)隔離級(jí)別—將Spring事務(wù)屬性è 13;定義的隔離級(jí)別應(yīng)用到WebLogic JTA事務(wù)中。這使得每個(gè)事務(wù)都可以定&# 20041;數(shù)據(jù)庫(kù)的隔離級(jí)別,而這是標(biāo)準(zhǔn)JTA 152;不支持的。
3、強(qiáng)制事務(wù)恢復(fù)—即使在暫停的事 1153;被標(biāo)識(shí)為回滾時(shí)也可以恢復(fù)。這需 要使用WebLogic的擴(kuò)展TransactionManager接口來(lái)調(diào)用forceResume ()方法。


Figure 2. WebLogic Server"s transaction monitor (click the image for a full-size screen shot)

Spring的WebLogicJtaTransactionManager有效地為基于Spring的應(yīng)用&# 25552;供了WebLogic Server事務(wù)管理的全部功能。這使得Spring事& #21153;分離成為一種能與EJB CMT竟?fàn)幍漠a(chǎn)品,而且提供了相同級(jí)別&# 30340;事務(wù)支持。

Spring and EJB CMT

如上所示,Spring的POJO聲明性事務(wù)分離可& #20197;作為一種除傳統(tǒng)EJB CMT這外的選擇。但是Spring與EJB并不是完成& #20114;斥的,Spring的應(yīng)用上下文也可以作為 EJB fa?ade的后臺(tái)來(lái)管理數(shù)據(jù)訪問(DAO)和& #20854;他細(xì)紋理的業(yè)務(wù)對(duì)象。

在EJB情景中,事務(wù)是由EJB CMT來(lái)驅(qū)動(dòng)的。對(duì)Spring來(lái)說(shuō),數(shù)據(jù)訪問支 345;特性會(huì)自動(dòng)檢測(cè)到這樣的環(huán)境并且& #37319;用相應(yīng)的事務(wù)。例如,Spring對(duì)Hibernate的支 ;持能夠提供隱式的資源管理,即使 159;EJB驅(qū)動(dòng)的事務(wù),甚至可以在不需要? 2;改任何DAO代碼的情況下提供相同的語(yǔ) 義。
Spring有效的解耦了DAO實(shí)現(xiàn)與實(shí)際的運(yùn)行&# 29615;境。DAO可以參與Spring的事務(wù)就像參與EJB CMT事務(wù)一樣。這不僅簡(jiǎn)化在其他環(huán)境&# 20013;的重用,而且更方便在J2EE容器外進(jìn) 4892;測(cè)試。

結(jié)論
Spring框架為J2EE和非J2EE環(huán)境提供了全量的é 07;務(wù)分離的特性,特別表現(xiàn)在POJO的聲? 6;性事務(wù)上。他用一種靈活而非侵入 4335;的方式為非EJB環(huán)境中的事務(wù)分離提? 79;了便利。與EJB不同,這樣的事務(wù)性POJO 4212;用對(duì)象可以很容易的被測(cè)試和在J2EE 481;器外補(bǔ)重用。

Spring提供了各種事務(wù)策略,如JtaTransactionManager是 用來(lái)代理J2EE服務(wù)器的事務(wù)協(xié)調(diào)器,而J DBC DataSourceTransactionManager是用來(lái)為簡(jiǎn)單的JDBC DataSource(就是單一目標(biāo)數(shù)據(jù)庫(kù))執(zhí)行事 1153;。Spring可以很容易為不同的環(huán)境通過&# 21518;臺(tái)配置的簡(jiǎn)單修改來(lái)調(diào)整事務(wù)策略 ;。

超越標(biāo)準(zhǔn)的JTA支持,Spring為WebLogic Server的JTA擴(kuò)展提供了完善的集成,可以 903;持高級(jí)特性如事務(wù)監(jiān)視和每事務(wù)隔& #31163;級(jí)別。通過對(duì)WebLogic Server的特殊支持,基于Spring的應(yīng)用可以完& #20840;利用WebLogic Server的事務(wù)管理功能。

Spring事務(wù)分離是繼EJB CMT之外的另一種可選方式,特別是對(duì)&# 37027;些基于POJO的輕量級(jí)架構(gòu)。在那只是 2240;為選擇LSSB(本地?zé)o狀態(tài)會(huì)話BEAN)來(lái)應(yīng) 用聲明性事務(wù)的情況下,基于Spring的POJO 6381;務(wù)模型是一種可行的選擇,他提供 了非常高層的靈活性、可測(cè)試性和? 25;用性。

資源
JTA - The JTA specification JTA規(guī)范
WebLogic JTA - Documentation of WebLogic"s JTA extensions WebLogicJTA擴(kuò)展文檔

關(guān)于作者
Juergen Hoeller是Spring框架的創(chuàng)始人之一

在SPRING中實(shí)現(xiàn)事務(wù)暫停


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 中文字幕欧美日韩久久 | 天天干天天干天天干天天干天天干 | 国产图片综合区 | 四虎永久免费影院在线 | 另类图片综合网 | 天天干b| 99久久久久国产精品免费 | 最新日韩在线观看 | 久草免费色站 | 国产成+人+综合+亚洲专 | 日韩毛片欧美一级a网站 | 国产欧美一区二区三区免费 | 一区二区网站 | 人成午夜免费大片在线观看 | 91孕妇精品一区二区三区 | 成人在线天堂 | 日韩色视频一区二区三区亚洲 | 国产精品国产亚洲精品不卡 | 全免费毛片在线播放 | 国产高清一区二区 | 国产免费私人影院永久免费 | 久草成人| 日韩久久影院 | 国产成人精品永久免费视频 | 中文国产日韩欧美视频 | 久精品在线观看 | 国产无毛 | 国产欧美日韩精品一区二区三区 | 国产成年视频 | 天天干天天操天天做 | 一级特黄aaa大片 | 国产一区二区不卡 | 日韩在线国产精品 | 国产一区成人 | 香蕉久久精品国产 | 日韩中文字幕精品久久 | 国产精品亚洲精品久久成人 | 久久香蕉国产线看观看亚洲卡 | 亚洲成人免费看 | 国产精品一区视频 | 欧美不卡在线视频 |