调用webservice接口,数据不回滚问题
调用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文件配置
<!-- **************下面为事务控制相关配置: 手动方式******************** --><!-- JDBC事务管理器 注意:事务管理器传的参数是数据源--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" scope="singleton" ><property name="dataSource"><ref bean="dataSource" /></property></bean><!-- 声明事务模板 --><bean id="transactionTemplate"class="org.springframework.transaction.support.TransactionTemplate"><property name="transactionManager"><ref bean="transactionManager" /></property></bean>
java代码
/** 注入声明式事物模板*/@Resourceprivate JdbcDbDAO pubjdbcDAO;@Resourceprivate 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>() {String jsonStr="";//返回值@Overridepublic String doInTransaction(TransactionStatus ts) {try {// 使用JdbcTemplate进行持久化层操作String delSQL="DELETE FROM ZYGL_YZMXB";//封装好的JdbcTemplateint exeRnt=pubjdbcDAO.execSQL(delSQL);//封装J好的dbcTemplateif(exeRnt <= 0){jsonStr="操作失败!!";}else{jsonStr="操作成功!!";} }catch (Exception e) {ts.setRollbackOnly();jsonStr="数据发生异常,异常信息:"+e.getLocalizedMessage();return jsonStr;}// 如果成功,事务被提交return jsonStr;}});return execute;}
调用webservice接口,数据不回滚问题相关推荐
- android调用web接口,Android调用webservice 接口
以查询手机号码归属地的Web service为例,它的wsdl为 1 在Android项目中导入??Ksoap2-android jar第三方jar包?? 2 Activity代码 public cl ...
- VC++使用Soap ToolKit3.0调用WebService接口
由于项目需要,需要实现VC调用WebService接口,之前没接触过这个,所以花了一天找了点资料,并自己编写了demo. 1. 首先看了Soap相关资料,见http://www.w3school.co ...
- Spring 事务方法与非事务方法相互调用 @Transactional 注解失效不回滚?
写这篇文章的初衷呢就是最近遇到了一个Spring事务的大坑.与其说是坑,还不如说是自己事务这块儿太薄弱导致的(自嘲下). 项目环境 Spring Boot 下面开始问题描述,发生的过程有点长,想直接看 ...
- PHP调用WebService接口
WebService是一个提供外部使用的一个服务,使用PHP去调用它其实是很简单的,写一个demo如下: 1.首先你的PHP要支持SOAP 检测PHP是否支持SOAP打印phpinfo(),如下图说明 ...
- 调用webservice接口,报错:(十六进制值0x01)是无效的字符。
文章目录 #事故现场 #分析 #解决方法 #事故现场 调用webservice接口,报错:(十六进制值0x01)是无效的字符. 如图: 意思是webservice返回的信息中包含无效的字符,无法解析成 ...
- HttpClient调用WebService接口
文章目录 前言 WebService是什么? WebService原理? HttpClient是什么? HttpClient应用场景? 使用HttpClient调用WebService接口 1.创建H ...
- JAVA使用HttpClient调用webservice接口
JAVA使用HttpClient调用webservice接口 关于HttpClient用法参考: HttpClient-4.5.2官方教程完整翻译 官方教程原文链接 HttpClient下载地址: 链 ...
- java调用webservice接口(.asmx)
前几天对接阿里云短信接口时,需要调用其他系统的数据,该系统开发人员给我提供了webservice接口.对于从来没见过webservice接口的我,真的是一脸懵.现在把记录一下,方便自己以后用,说不定也 ...
- java 调用webservice 接口,并解析返回参数
java 调用webservice 接口,并解析返回参数 1. 设置传参,例如以下格式: // 确定传参格式以及赋值 String reqXml = "<createAppParam& ...
最新文章
- 豆瓣评分 9.3 的 Java 巨著 | Bruce Eckel 重讲 Java 的编程思想
- python 学习之FAQ:find 与 find_all 使用
- 【错误记录】Flutter / Android 报错 ( AAPT: error: attribute android:requestLegacyExternalStorage not found )
- Leetcode python《热题 HOT 100》1. 两数之和
- c#简单自定义异常处理日志辅助类
- 用python玩转数据测试答案_大学慕课2020用Python玩转数据章节测试答案
- powderdesinger显示中英文表名
- 【美团外卖】美食知识图谱的迭代及应用
- 基于FPGA的深度学习CNN加速器设计
- Apple苹果iOS数据丢失如何恢复?
- 【聚类分析】基于FCM聚类实现交通干道车流量聚类分析及预测含Matlab源码
- python第二版课后答案第七章7.5_IDA7.5 启动基础配置
- DDL、DML、DQL、DCL、DTL MySQL常用语法大全
- JVM结构和JVM的架构模型以及JAVA生命周期介绍
- java 获取百度云盘图片_java 利用百度云识别图片文字
- Pico VR 一体机初测
- Unity学习笔记:个人学习项目《疯狂天才埃德加》纠错文档
- HDMI上电信号分析
- The Sandbox阐释对元宇宙平台的愿景
- microsoft WINDOWS 系统错误代码