成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

調(diào)用webservice接口,數(shù)據(jù)不回滾問(wèn)題

yzzz / 1980人閱讀

摘要:如果代碼出現(xiàn)異常調(diào)用對(duì)象的將事務(wù)回滾。否則,如果方法正常返回,事務(wù)將被提交。

調(diào)用webservice接口,數(shù)據(jù)不回滾問(wèn)題
使用cxf+spring框架開(kāi)發(fā)webservice接口,在開(kāi)發(fā)一個(gè)具有保存數(shù)據(jù)的接口功能時(shí),如果數(shù)據(jù)發(fā)生了異常,對(duì)service層無(wú)論使用了xml配置聲明式事務(wù)管理還是使用了使用@Transactional注解聲明式事務(wù)管理,數(shù)據(jù)均不會(huì)回滾;在debug代碼和查詢相關(guān)資料后,個(gè)人覺(jué)得數(shù)據(jù)不會(huì)回滾的原因:調(diào)用webservice接口時(shí),發(fā)生的異常并沒(méi)有在service被spring捕獲到,而是直接拋出給調(diào)用接口的客戶端,所以就沒(méi)有回滾。這時(shí)候就需要在拋出異常的地方手動(dòng)回滾事務(wù)。

手動(dòng)回滾事務(wù)原理
org.springframework.transaction.support.TransactionTemplate:可以在service層方法中添加事務(wù),Spring為我們提供了一種方法就是使用TransactionTemplate類;我們要為T(mén)ransactionTemplate裝配一個(gè)TransactionManager,調(diào)用TransactionTemplate實(shí)例的execute()方法將執(zhí)行包含在TransactionCallback實(shí)例里的代碼。如果代碼出現(xiàn)異常,調(diào)用TransactionStatus對(duì)象的setRollbackOnly()將事務(wù)回滾。否則,如果doInTransaction()方法 正常返回,事務(wù)將被提交。

手動(dòng)回滾事務(wù)相關(guān)代碼實(shí)現(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
       //開(kāi)始事務(wù),如果出現(xiàn)狀況則回滾
       String execute = transactionTemplate.execute(new TransactionCallback() {
            String jsonStr="";//返回值
            @Override
            public String doInTransaction(TransactionStatus ts) {
                try {
                    // 使用JdbcTemplate進(jìn)行持久化層操作
                    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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/66386.html

相關(guān)文章

  • springboot注解總結(jié)

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

    happyfish 評(píng)論0 收藏0
  • SpringBoot 實(shí)戰(zhàn) (十) | 聲明式事務(wù)

    摘要:前言如題,今天介紹的聲明式事務(wù)。提供一個(gè)注解在配置類上來(lái)開(kāi)啟聲明式事務(wù)的支持。而在配置里還開(kāi)啟了對(duì)聲明式事務(wù)的支持,代碼如下所以在中,無(wú)須顯式開(kāi)啟使用注解。源碼下載后語(yǔ)以上為聲明式事務(wù)的教程。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問(wèn)題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問(wèn)題。 前言 如題,今天介紹 SpringBoot 的 聲明式事務(wù)。 Spring 的事務(wù)機(jī)制 所有的數(shù)據(jù)訪問(wèn)技術(shù)都有事務(wù)處...

    ygyooo 評(píng)論0 收藏0
  • spring事務(wù)處理

    摘要:聲明式事務(wù)管理的事務(wù)管理是通過(guò)代理實(shí)現(xiàn)的。其中的事務(wù)通知由元數(shù)據(jù)目前基于或注解驅(qū)動(dòng)。代理對(duì)象與事務(wù)元數(shù)據(jù)結(jié)合產(chǎn)生了一個(gè)代理,它使用一個(gè)實(shí)現(xiàn)品配合,在方法調(diào)用前后實(shí)施事務(wù)。 JDBC事務(wù) 1.獲取連接 Connection con=DriverManager.getConnection(); 2.開(kāi)啟事務(wù) con.setAutoCommit(true/fase); 3.執(zhí)行CRUD 4....

    李文鵬 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<