锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
ERROR - Io 寮傚父錛歋oftware caused connection abort: recv failed
璇烽棶鏄粈涔堝師鍥犻犳垚鐨勶紝璋㈣阿錛?/p>
]]>
]]>
1.瀹氫箟SanHibernateTransactionManager綾伙紝緇ф壙spring涓殑
HibernateTransactionManager錛屼究浜庤幏寰桯ibernateTransactionObject銆傛妸榪欎釜綾繪敞鍏ュ埌spring瀹瑰櫒涓?br />
<
bean聽
id
="transactionManager"
聽聽聽聽聽聽聽聽class
="com.san.tools.hibernate.SanHibernateTransactionManager"
>
聽聽聽聽聽聽聽聽
<
property聽
name
="sessionFactory"
>
聽聽聽聽聽聽聽聽聽聽聽聽
<
ref聽
bean
="sessionFactory"
/>
聽聽聽聽聽聽聽聽
</
property
>
聽聽聽聽
</
bean
>
聽
public聽class聽SanHibernateTransactionManager聽extends聽HibernateTransactionManager
{
聽聽聽聽public聽Object聽getTransactionObj()
{
聽聽聽聽聽聽聽聽return聽super.doGetTransaction();
聽聽聽聽}
聽聽聽聽
聽聽聽聽聽聽聽聽
聽聽聽聽public聽boolean聽existsTransaction(Object聽transaction)
{
聽聽聽聽聽聽聽聽return聽super.isExistingTransaction(transaction);
聽聽聽聽}
聽聽聽聽
聽聽聽聽public聽Session聽getSession()
{
聽聽聽聽聽聽聽聽return聽SessionFactoryUtils.getSession(this.getSessionFactory(),聽true);
聽聽聽聽}
聽聽聽聽
聽聽聽聽public聽Session聽getCurrentSession()
{
聽聽聽聽聽聽聽聽HibernateTransactionObject聽obj聽=聽(HibernateTransactionObject)this.getTransactionObj();
聽聽聽聽聽聽聽聽return聽obj.getSessionHolder().getSession();
聽聽聽聽}
}
2.寮濮嬩簨鍔°?/font>
public
聽
void
聽beginTransaction()聽
throws
聽SQLException
{
聽聽聽聽聽聽聽聽
//
TransactionDefinition.PROPAGATION_REQUIRED:鏀寔褰撳墠鐨勪簨鍔★紝濡傛灉涓嶅瓨鍦ㄥ氨鍒涘緩涓涓柊鐨勩?/span>
聽聽聽聽聽聽聽聽DefaultTransactionDefinition聽transactionDef聽
=
聽
new
聽DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRED);
聽聽聽聽聽聽聽聽
//
鍒涘緩涓涓猅ransactionStatus
聽聽聽聽聽聽聽聽TransactionStatus聽transactionStatus聽
=
聽transactionManager.getTransaction(transactionDef);
聽聽聽聽聽聽聽聽
//
鍙栧緱緇戝畾鍒板綋鍓嶇嚎紼嬩笂鐨剆ession銆備粠HibernateTransactionObject涓幏寰楋紝榪欓噷淇敼浜唖pring涓璈ibernateTransactionManager.java鏂囦歡錛?br />
聽聽聽聽聽聽聽聽
//
灝唒rivate聽HibernateTransactionObject鏀逛負protected聽HibernateTransactionObject
聽聽聽聽聽聽聽聽Session聽session聽
=
聽transactionManager.getCurrentSession();
聽聽聽聽聽聽
if
(session聽
!=
聽
this
.session)
{
聽聽聽聽聽聽聽聽聽聽聽聽System.err.println(
"
session涓嶆槸鍚屼竴瀵硅薄
"
);
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽
//
灝唗ransactionStatus淇濆瓨鍒伴泦鍚堜腑
聽聽聽聽聽聽聽聽
this
.transactionStatuss.add(transactionStatus);
聽聽聽聽聽聽聽聽
this
.beginTransaction聽
=
聽
true
;
聽聽聽聽}
public
聽
void
聽commit()聽
throws
聽HibernateException,SQLException
{
聽聽聽聽聽聽聽聽
//
寰幆TransactionStatus闆嗗悎錛岀洿鑷崇涓涓猼ransactionStatus琚彁浜ゆ椂錛屾墠鐪熸鎻愪氦
聽聽聽聽聽聽聽聽
for
(
int
聽i聽
=
聽transactionStatuss.size()聽
-
聽
1
;i聽
>=
聽
0
;i
--
)
{
聽聽聽聽聽聽聽聽聽聽聽聽DefaultTransactionStatus聽transactionStatus聽
=
聽(DefaultTransactionStatus)transactionStatuss.get(i);
聽聽聽聽聽聽聽聽聽聽聽聽transactionManager.commit(transactionStatus);
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽transactionStatuss.clear();
聽聽聽聽}
public聽void聽rollBack()
{
聽聽聽聽聽聽聽聽for(int聽i聽=聽transactionStatuss.size()聽-聽1;i聽>=聽0;i--)
{
聽聽聽聽聽聽聽聽聽聽聽聽DefaultTransactionStatus聽transactionStatus聽=聽(DefaultTransactionStatus)transactionStatuss.get(i);
聽聽聽聽聽聽聽聽聽聽聽聽transactionManager.rollback(transactionStatus);
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽transactionStatuss.clear();
聽聽聽聽}
]]>