国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

調用webservice接口,數據不回滾問題

yzzz / 1975人閱讀

摘要:如果代碼出現異常調用對象的將事務回滾。否則,如果方法正常返回,事務將被提交。

調用webservice接口,數據不回滾問題
使用cxf+spring框架開發webservice接口,在開發一個具有保存數據的接口功能時,如果數據發生了異常,對service層無論使用了xml配置聲明式事務管理還是使用了使用@Transactional注解聲明式事務管理,數據均不會回滾;在debug代碼和查詢相關資料后,個人覺得數據不會回滾的原因:調用webservice接口時,發生的異常并沒有在service被spring捕獲到,而是直接拋出給調用接口的客戶端,所以就沒有回滾。這時候就需要在拋出異常的地方手動回滾事務。

手動回滾事務原理
org.springframework.transaction.support.TransactionTemplate:可以在service層方法中添加事務,Spring為我們提供了一種方法就是使用TransactionTemplate類;我們要為TransactionTemplate裝配一個TransactionManager,調用TransactionTemplate實例的execute()方法將執行包含在TransactionCallback實例里的代碼。如果代碼出現異常,調用TransactionStatus對象的setRollbackOnly()將事務回滾。否則,如果doInTransaction()方法 正常返回,事務將被提交。

手動回滾事務相關代碼實現

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
       //開始事務,如果出現狀況則回滾
       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="數據發生異常,異常信息:"+e.getLocalizedMessage();
                    return jsonStr;
                }
                // 如果成功,事務被提交
                return jsonStr;

            }
        });

        return execute;
    }

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66386.html

相關文章

  • springboot注解總結

    摘要:解決注解不回滾檢查你方法是不是的。之后新加入的注解,原來返回需要和配合。和為異步注解,放到方法上,表示調用該方法的線程與此方法異步執行,需要配合注解使用。是中的標注,是為了控制返回的字符串顯示哪些字段。 @SpringBootApplication = (默認屬性)@Configuration + @EnableAutoConfiguration + @ComponentScan。 @...

    happyfish 評論0 收藏0
  • SpringBoot 實戰 (十) | 聲明式事務

    摘要:前言如題,今天介紹的聲明式事務。提供一個注解在配置類上來開啟聲明式事務的支持。而在配置里還開啟了對聲明式事務的支持,代碼如下所以在中,無須顯式開啟使用注解。源碼下載后語以上為聲明式事務的教程。 微信公眾號:一個優秀的廢人如有問題或建議,請后臺留言,我會盡力解決你的問題。 前言 如題,今天介紹 SpringBoot 的 聲明式事務。 Spring 的事務機制 所有的數據訪問技術都有事務處...

    ygyooo 評論0 收藏0
  • spring事務處理

    摘要:聲明式事務管理的事務管理是通過代理實現的。其中的事務通知由元數據目前基于或注解驅動。代理對象與事務元數據結合產生了一個代理,它使用一個實現品配合,在方法調用前后實施事務。 JDBC事務 1.獲取連接 Connection con=DriverManager.getConnection(); 2.開啟事務 con.setAutoCommit(true/fase); 3.執行CRUD 4....

    李文鵬 評論0 收藏0

發表評論

0條評論

yzzz

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<