EJB的事務(wù)處理屬性
發(fā)表時(shí)間:2024-02-23 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]同事寫(xiě)的,發(fā)到這里共享一個(gè)事務(wù)處理的屬性有:Required,RequiresNew,Mandatory,NotSupported,Supports,Never. 1、Required:當(dāng)客戶(hù)端運(yùn)行一個(gè)事務(wù)處理并調(diào)用EJB的一個(gè)方法,這個(gè)方法執(zhí)行客戶(hù)端的事務(wù)處理;當(dāng)客戶(hù)端沒(méi)有啟動(dòng)一個(gè)事務(wù)處理,則E...
同事寫(xiě)的,發(fā)到這里共享
一個(gè)事務(wù)處理的屬性有:Required,RequiresNew,Mandatory,NotSupported,Supports,Never.
1、Required:當(dāng)客戶(hù)端運(yùn)行一個(gè)事務(wù)處理并調(diào)用EJB的一個(gè)方法,這個(gè)方法執(zhí)行客戶(hù)端的事務(wù)處理;當(dāng)客戶(hù)端沒(méi)有啟動(dòng)一個(gè)事務(wù)處理,則EJB容器在執(zhí)行這個(gè)方法之前啟動(dòng)一個(gè)新的事務(wù)處理.
2、RequiresNew:當(dāng)客戶(hù)端運(yùn)行一個(gè)事務(wù)處理并調(diào)用EJB的一個(gè)方法時(shí),容器管理器做如下操作:
(1) 懸掛客戶(hù)端的事務(wù)處理;
(2) 開(kāi)始一個(gè)新的事務(wù)處理;
(3) 調(diào)用方法;
(4) 當(dāng)方法結(jié)束,恢復(fù)客戶(hù)端的事物處理.
當(dāng)客戶(hù)端沒(méi)有啟動(dòng)一個(gè)事務(wù)處理,容器管理器在執(zhí)行這個(gè)方法之前啟動(dòng)一個(gè)新的事務(wù)處理.
3、Mandatory: 當(dāng)客戶(hù)端運(yùn)行一個(gè)事務(wù)處理并調(diào)用EJB的一個(gè)方法,這個(gè)方法在客戶(hù)端的事務(wù)處理范圍內(nèi)被執(zhí)行; 當(dāng)客戶(hù)端沒(méi)有啟動(dòng)一個(gè)事務(wù)處理,容器管理器將會(huì)拋錯(cuò)(TransactionRequiredException);
4、NotSupported: 當(dāng)客戶(hù)端運(yùn)行一個(gè)事務(wù)處理并調(diào)用EJB的一個(gè)方法,容器管理器在調(diào)用方法之前終止客戶(hù)端的事務(wù)處理,當(dāng)方法執(zhí)行完,再恢復(fù)客戶(hù)端的事務(wù)處理; 當(dāng)客戶(hù)端沒(méi)有啟動(dòng)一個(gè)事務(wù)處理,容器管理器在調(diào)用方法時(shí)不啟動(dòng)事務(wù)處理.
5、Supports: 當(dāng)客戶(hù)端運(yùn)行一個(gè)事務(wù)處理并調(diào)用EJB的一個(gè)方法,在運(yùn)行方法時(shí)執(zhí)行客戶(hù)端的事務(wù)處理; 當(dāng)客戶(hù)端沒(méi)有啟動(dòng)一個(gè)事務(wù)處理,容器管理器在調(diào)用方法時(shí)不啟動(dòng)事務(wù)處理.
6、Never: 當(dāng)客戶(hù)端運(yùn)行一個(gè)事務(wù)處理并調(diào)用EJB的一個(gè)方法,容器管理器將拋出一個(gè)錯(cuò)誤(RemoteException); 當(dāng)客戶(hù)端沒(méi)有啟動(dòng)一個(gè)事務(wù)處理,容器管理器在調(diào)用方法時(shí)不啟動(dòng)事務(wù)處理.
在jbuilder中,缺省是Required;
第一個(gè)ejb可以是 Required,這個(gè)ejb調(diào)用的那個(gè)ejb方法如果想在一個(gè)
事務(wù)上下文中,我覺(jué)得可能采用Mandatory,方式比較好。如果它們不在一個(gè)事務(wù)上下文中,就會(huì)拋錯(cuò)(TransactionRequiredException),是一個(gè)上下文,就沒(méi)有問(wèn)題