急 怎样保证两个方法全部执行成功

问题描述

小弟在做一个项目,遇到一个问题,大致是这样的:在一个action里面,要调用service层的两个方法,这两个方法是把当前两个对象提交到数据库的,并且该方法会抛出异常,现在要保证该方法全部执行成功,才把这两个对象提交到数据库的,任何一个方法抛出异常就返回错误页面!恳请各位大侠说出思路,不只同步可不可实现。

解决方案

解决方案二:
吃饭回来再看。先占个位。
解决方案三:
...用2个if不就行了吗?反正你判断哪一个如果不行的话都要报错,又不存在同步的问题if(ManagerA.method){if(ManagerB.mehtod){returnSUCCESS;}else{returnERROR;}}else{returnERROR;}不知道我这样理解你对不对?
解决方案四:
引用2楼banglezwy的回复:

...用2个if不就行了吗?反正你判断哪一个如果不行的话都要报错,又不存在同步的问题if(ManagerA.method){if(ManagerB.mehtod){  returnSUCCESS;}else{ returnERROR;}}else{returnERROR;}不知道我这样理解你对不对?

如果a方法执行成功了,那么这条数据就已经进入数据库了,即使b方法错误了也是如此
解决方案五:
应该用事务处理吧。。
解决方案六:
if(ManagerA.method){if(ManagerB.mehtod){returnSUCCESS;}else{methodReturnA();returnERROR;}}else{returnERROR;}你可以再action里面再写1个方法methodReturnA,如果A不成功,就报错了,如果A成功了,B不成功,B就不执行了,在返回错误之前调用action的methodReturnA方法,用来返回A中的数据。
解决方案七:
配置什么样的事务呢?急呀,银行项目的,
解决方案八:
事务不显示吧,是不同的Manager吧,要不你写成1个manager做一下事务的控制,就可以做事务回滚了
解决方案九:
这不就是事务处理吗!在service层进行事务管理,把2个方法合成1个。
解决方案十:
对,加上if判断就行了。
解决方案十一:
可以考虑用ejb控制一下事务我们现在都是通过ejb进程事务控制的。还有如果要是用到了spring框架可以用spring框架控制事务。我觉得ejb是个比较不错的东西。你要有一个大的service方法然后还要两个小的service方法。在action里调用这个大的service方法然后大service方法里分别调用那两个插入对象的方法!
解决方案十二:
你不能直接在action里分别调用这两个方法!
解决方案十三:
加if返回标识即可。。
解决方案十四:
引用10楼wzc_zxy的回复:

可以考虑用ejb控制一下事务我们现在都是通过ejb进程事务控制的。还有如果要是用到了spring框架可以用spring框架控制事务。我觉得ejb是个比较不错的东西。你要有一个大的service方法然后还要两个小的service方法。在action里调用这个大的service方法然后大service方法里分别调用那两个插入对象的方法!

得,EJB都整出来了。为了做个事务处理还得把项目重做一遍!
解决方案十五:
两个方法不执行插入,只返回一个标识位,然后通过这两个返回的标识判断,由另一个方法执行插入数据提交。
解决方案:
事务处理。如果你用了spring。。。如果你除了actionservice之外还有一层dao如果你的service是调用的dao层,并且你的事务配置是在service层,那么,把你的两个插入操作写在同一个service方法里面,外加trycatch,例如saveAandB(A,B)然后在action里面调用这个service中的saveAandB(A,B)方法。
解决方案:
这样,一旦某一个插入失败出错之后,整个方法就会回滚的。
解决方案:
不能直接调用两个方法。把2个方法合成1个吧。
解决方案:
引用13楼bayougeng的回复:

引用10楼wzc_zxy的回复:可以考虑用ejb控制一下事务我们现在都是通过ejb进程事务控制的。还有如果要是用到了spring框架可以用spring框架控制事务。我觉得ejb是个比较不错的东西。你要有一个大的service方法然后还要两个小的service方法。在action里调用这个大的service方法然后大service方法里分别调用那两个插入对象的方法!得,EJB都整出来了。为了做个事务处理还得把项目重做一遍!

呵呵我没考虑那么多。那就方法里嵌套方法。第一个方法插入判断是否成功成功然后再调用另一个方法。看来我真有点笨哈!!o(∩_∩)o哈哈
解决方案:
try{method1();method2();commit();}catch(Exceptione){rollback();}

解决方案:
用事务
解决方案:
我在沉思,这银行系统安全吗???
解决方案:
如果你这两个方法在同一个service中的话,可以用其中一个方法调用别一个方法,然后这个方法启用事务处理。如果不在同一个service的话,就在action中自己写个事务吧。
解决方案:
什么银行,以后咱们小心点。。。
解决方案:
我明天就把钱从银行把我那几百块取出来放我枕头底下,安全!!!思路:如果被调用的两个方法都是Code管理Transaction的,你就没办法实现你说的那个目的,只有自己重写个新的方法,把那两个方法的实现Copy进来,用一个Transaction来控制。如果那两个方法是用Container的declarativeTransaction,还得看他们的TransactionAttribute,如果是Required/Mandatory/Supports的,你就在你的Action的方法加上transaction--Required呃,我觉得说多了也没啥用.......
解决方案:
直接判断只要其中有一个不成功,就把将要保存的数据从表中删除。即使表中还没有数据被保存调用delete也不会报错。
解决方案:
感觉lz分层逻辑有问题,一个service中的方法就是执行一个操作。根据lz的描述,应该是一个方法中执行2个关于数据插入的操作。按照我的想法,应该是一个service中的方法调用2个dao中的方法。然后事务处理配置在这“一个”service方法上。在这个方法中,无论什么位置出现例外,事物都会回滚。也就是实现了lz所谓的“保证一次调用两个操作并且保证数据完整性”的需求了。这是我的个人理解,错了还请见谅。呵呵goodluck
解决方案:
引用19楼believefym的回复:

Javacodetry{method1();method2();commit();}catch(Exceptione){rollback();}

支持楼上的
解决方案:
如果2个方法是对数据库的操作的话用存储过程封装下在存储过程中写事务这样应该很OK得

时间: 2024-11-13 07:56:54

急 怎样保证两个方法全部执行成功的相关文章

android 添加好友后,onContactAdded() onContactAgreed()这两个方法没有执行

问题描述 android 添加好友后,onContactAdded() onContactAgreed()这两个方法没有执行 解决方案 设置的需要好友验证吗?如果设置了,需要对方调用同意好友请求的方法

java 多线程-下面两个方法同步吗,请说明理由,有什么方法可以验证?

问题描述 下面两个方法同步吗,请说明理由,有什么方法可以验证? class Test { synchronized static void say Hello3() { } synchronizedvoid getX() {} } 解决方案 现实应用如下场景: 一个人名叫王X的人 暗地销售火车票,数量为 SUM=1000; 某个时刻 用户甲从他那里购买了2张. 某个时刻 用户乙从他那里购买了4张. 某个时刻 用户丙从他那里购买了7张. ............... 购买者必须轮流购买火车票.

java-struts2:一个action类里有两个方法,我访问其中的一个方法配置的action

问题描述 struts2:一个action类里有两个方法,我访问其中的一个方法配置的action struts2:一个action类里有两个方法,我访问其中的一个方法配置的action,为什么会将两个方法都执行? 解决方案 action里的代码以及配置一起贴出来吗? 解决方案二: 有个方法是不是构造方法,struts2是多例的,一旦执行之后,先执行构造方法,创造一个实例,然后根据前台的要求,执行相应的操作方法

link下,比如有一个事件,+=了两个方法,如何只执行第二个方法,不执行第一个?

问题描述 link下,比如有一个事件,+=了两个方法,如何只执行第二个方法,不执行第一个? link下,比如有一个事件,+=了两个方法,如何只执行第二个方法,不执行第一个? 解决方案 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Reflecti

当APP在后台运行时,接收到消息.有部分方法会执行两次.导致通知中显示收到的消息数是实际的两倍.

问题描述 当APP在后台运行时,接收到消息.有部分方法会执行两次.导致通知中显示收到的消息数是实际的两倍.求大神解答 解决方案 什么部分方法会执行两次,你是否监听了多次呢?解决方案二:我的也有这样的问题,求答案解决方案三:我也遇到了这个问题.我分析了一下,估计是下面的原因:测试手机使用的是小米,最新的SDK集成了小米的推送服务.导致在接受消息的时候,会接受小米的推送消息,然后环信的连接就连上了,环信又接受了一次.这就出现两条消息提示,但是实际只有一条消息.

ASP.NET中基类Page_Load方法后执行的原因

加载对应Load事件和OnLoad方法,对于这个事件,相信大多数朋友都会比较熟悉,用VS.Net生成的页面中的Page_Load方法就是响应Load事件的方法,对于每一次请求,Load事件都会触发,Page_Load方法也就会执行,相信这也是大多数人了解ASP.Net的第一步. Page_Load方法响应了Load事件,这个事件是在System.Web.WebControl.Control类中定义的(这个类是Page和所有服务器控件的祖宗),并且在OnLoad方法中被触发. 很多人可能碰到过这样

jQuery的 $.ajax防止重复提交的两种方法(推荐)_jquery

下面给大家带来两种关于jquery 的ajax防止重复提交的解决方法,具体介绍如下所示: 1.第一种,对于onclick事件触发的的ajax 可以采用如下方法: 即在beforeSend中使点击按钮不可用,ajax结果返回后置为可用 $.ajax( { type: 'POST', url: APP+'?m=Shopping&a=ajaxSubmitorder&sid='+sid+'&src='+src, cache:false, dataType: 'json', data: {'

JavaBean实现多文件上传的两种方法

上传 摘要:本文介绍了JavaBean实现多个文件上传的两种方法,分别是使用http协议和ftp协议实现.首先讲述了http协议传送多个文件的基本格式和实现上传的详细过程,之后简单介绍了使用ftpclient 类实现了ftp方式的上传,最后对这两种方法进行了比较. 关键字:JavaBean .http .ftp .ftpclient JavaBean是一种基于Java的软件组件.JSP对于在Web 应用中集成JavaBean组件提供了完善的支持.这种支持不仅能缩短开发时间(可以直接利用经测试和可

Ajax中解析Json的两种方法对比分析

  这里给大家介绍的是Ajax中解析Json的两种方法对比分析,十分的实用,本文为学习笔记,属新手文章,欢迎指教! eval(); //此方法不推荐 JSON.parse(); //推荐方法 一.两种方法的区别 我们先初始化一个json格式的对象: ? 1 2 3 4 5 var jsonDate = '{ "name":"周星驰","age":23 }'   var jsonObj = eval( '(' + jsonDate + ')' );