摘要:如果代碼出現(xiàn)異常調(diào)用對象的將事務(wù)回滾。否則,如果方法正常返回,事務(wù)將被提交。
調(diào)用webservice接口,數(shù)據(jù)不回滾問題
使用cxf+spring框架開發(fā)webservice接口,在開發(fā)一個具有保存數(shù)據(jù)的接口功能時,如果數(shù)據(jù)發(fā)生了異常,對service層無論使用了xml配置聲明式事務(wù)管理還是使用了使用@Transactional注解聲明式事務(wù)管理,數(shù)據(jù)均不會回滾;在debug代碼和查詢相關(guān)資料后,個人覺得數(shù)據(jù)不會回滾的原因:調(diào)用webservice接口時,發(fā)生的異常并沒有在service被spring捕獲到,而是直接拋出給調(diào)用接口的客戶端,所以就沒有回滾。這時候就需要在拋出異常的地方手動回滾事務(wù)。
手動回滾事務(wù)原理
org.springframework.transaction.support.TransactionTemplate:可以在service層方法中添加事務(wù),Spring為我們提供了一種方法就是使用TransactionTemplate類;我們要為TransactionTemplate裝配一個TransactionManager,調(diào)用TransactionTemplate實例的execute()方法將執(zhí)行包含在TransactionCallback實例里的代碼。如果代碼出現(xiàn)異常,調(diào)用TransactionStatus對象的setRollbackOnly()將事務(wù)回滾。否則,如果doInTransaction()方法 正常返回,事務(wù)將被提交。
手動回滾事務(wù)相關(guān)代碼實現(xiàn)
xml文件配置
java代碼
/* * 注入聲明式事物模板 */ @Resource private JdbcDbDAO pubjdbcDAO; @Resource private TransactionTemplate transactionTemplate; public String SavePhysicianOrder(final String zyid,final String yzsllx,final String DATA_BUSINESS) { // TODO Auto-generated method stub //開始事務(wù),如果出現(xiàn)狀況則回滾 String execute = transactionTemplate.execute(new TransactionCallback() { String jsonStr="";//返回值 @Override public String doInTransaction(TransactionStatus ts) { try { // 使用JdbcTemplate進行持久化層操作 String delSQL="DELETE FROM ZYGL_YZMXB";//封裝好的JdbcTemplate int exeRnt=pubjdbcDAO.execSQL(delSQL);//封裝J好的dbcTemplate if(exeRnt <= 0){ jsonStr="操作失敗!!"; }else{ jsonStr="操作成功!!"; } } catch (Exception e) { ts.setRollbackOnly(); jsonStr="數(shù)據(jù)發(fā)生異常,異常信息:"+e.getLocalizedMessage(); return jsonStr; } // 如果成功,事務(wù)被提交 return jsonStr; } }); return execute; }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/66386.html
摘要:解決注解不回滾檢查你方法是不是的。之后新加入的注解,原來返回需要和配合。和為異步注解,放到方法上,表示調(diào)用該方法的線程與此方法異步執(zhí)行,需要配合注解使用。是中的標注,是為了控制返回的字符串顯示哪些字段。 @SpringBootApplication = (默認屬性)@Configuration + @EnableAutoConfiguration + @ComponentScan。 @...
摘要:前言如題,今天介紹的聲明式事務(wù)。提供一個注解在配置類上來開啟聲明式事務(wù)的支持。而在配置里還開啟了對聲明式事務(wù)的支持,代碼如下所以在中,無須顯式開啟使用注解。源碼下載后語以上為聲明式事務(wù)的教程。 微信公眾號:一個優(yōu)秀的廢人如有問題或建議,請后臺留言,我會盡力解決你的問題。 前言 如題,今天介紹 SpringBoot 的 聲明式事務(wù)。 Spring 的事務(wù)機制 所有的數(shù)據(jù)訪問技術(shù)都有事務(wù)處...
摘要:聲明式事務(wù)管理的事務(wù)管理是通過代理實現(xiàn)的。其中的事務(wù)通知由元數(shù)據(jù)目前基于或注解驅(qū)動。代理對象與事務(wù)元數(shù)據(jù)結(jié)合產(chǎn)生了一個代理,它使用一個實現(xiàn)品配合,在方法調(diào)用前后實施事務(wù)。 JDBC事務(wù) 1.獲取連接 Connection con=DriverManager.getConnection(); 2.開啟事務(wù) con.setAutoCommit(true/fase); 3.執(zhí)行CRUD 4....
閱讀 3543·2021-10-18 13:33
閱讀 888·2019-08-30 14:20
閱讀 2681·2019-08-30 13:14
閱讀 2573·2019-08-29 18:38
閱讀 2937·2019-08-29 16:44
閱讀 1256·2019-08-29 15:23
閱讀 3585·2019-08-29 13:28
閱讀 1965·2019-08-28 18:00