小弟在做一个项目,遇到一个问题,大致是这样的:在一个action里面,要调用service层的两个方法,这两个方法是把当前两个对象提交到数据库的,并且该方法会抛出异常,现在要保证该方法全部执行成功,才把这两个对象提交到数据库的,任何一个方法抛出异常就返回错误页面!恳请各位大侠说出思路,不只同步可不可实现。
解决方案 »
- 【关于JAVAEE 6中slf4j冲突,绑定Log4j失败,求解决方案】
- 问一个哈菜,哈呆的问题
- 两个小问题
- hibernate删除时出现的小问题
- 关于struts-config.xml调用本地struts-config_1_2.dtd的问题,请高手帮助
- 关于java.net.HttpURLConnection链接外网报411错误的
- EJB连库的问题啊!(80分啊!)
- java新手!jdk和tomcat在哪里下载啊? 还有什么比较好用的java开发工具吗?
- resin的连接池会自已挂掉?是这样的吗?
- EJB的客户端运行出现以下错误,请指教
- J2EE实现文件下载的问题,请求高手帮忙
- 发现了BUG
if(Manager A.method){
if(Manager B.mehtod){
return SUCCESS;
}else{
return ERROR;
}
}else{
return ERROR;
}
不知道我这样理解你对不对?
if(Manager B.mehtod){
return SUCCESS;
}else{
methodReturnA();
return ERROR;
}
}else{
return ERROR;
} 你可以再action里面再写1个方法
methodReturnA,如果A不成功,就报错了,如果A成功了,B不成功,B就不执行了,在返回错误之前调用action的methodReturnA方法,用来返回A中的数据。
在service层进行事务管理,把2个方法合成1个。
我觉得ejb是个比较不错的东西。你要有一个大的service方法 然后还要两个小的service 方法。在action里调用这个大的service 方法然后大service 方法里分别调用那两个插入对象的方法!
得,EJB都整出来了。为了做个事务处理还得把项目重做一遍!
如果你除了 action service 之外还有一层 dao如果你的 service 是调用的 dao层,并且你的事务配置是在 service层,那么,把你的两个插入操作写在同一个service
方法里面,外加 try catch,例如 saveAandB(A, B)然后在 action 里面调用这个service 中的 saveAandB(A, B)
方法。
method1();
method2();
commit();
}catch(Exception e){
rollback();
}
思路:如果被调用的两个方法都是Code管理Transaction的,你就没办法实现你说的那个目的,只有自己重写个新的方法,把那两个方法的实现Copy进来,用一个Transaction来控制。如果那两个方法是用Container的declarative Transaction, 还得看他们的Transaction Attribute,
如果是Required/Mandatory/Supports的,你就在你的Action 的方法加上transaction--Required呃,我觉得说多了也没啥用.......
一个service中的方法就是执行一个操作。
根据lz的描述,应该是一个方法中执行2个关于数据插入的操作。按照我的想法,
应该是一个service中的方法调用2个dao中的方法。
然后事务处理配置在这“一个”service方法上。
在这个方法中,无论什么位置出现例外,事物都会回滚。也就是实现了lz所谓的“保证一次调用两个操作并且保证数据完整性”的需求了。这是我的个人理解,错了还请见谅。呵呵good luck