楼上,怎么做成一个事务呀(ejb我不熟),在程序中实际上我是在这个session bean中的一个方法里要调用不同的DAO实现来操作数据库,如何做成一个事务请细说呀?!
解决方案 »
- struts2 注解 急需高手指点!
- 急!!!面试题求解 非常感谢
- Struts2 extends ActionSupport问题
- EJB2 与Hibernate结合问题
- inverse和cascade的起作用的先后顺序是什么 ?
- JAVA条形码Barcode4J
- quartz-jobs.xml的配置问题
- jboss配置问题
- java做QQ机器人
- struts这个东东是干什么的呀,哪里有些资料可以看看???
- 会STRUTS的都来看一看这是什么问题!!!message Invalid path /user/userManage was requested
- HIBERNATE配置文件和数据库字段类型一定要一致吗?
EJB组件配置文件中有一个事务属性,你仔细看看他们的说明,看看对你有没有帮助,如下:
1、Required:当客户端运行一个事务处理并调用EJB的一个方法,这个方法执行客户端的事务处理;当客户端没有启动一个事务处理,则EJB容器在执行这个方法之前启动一个新的事务处理. 2、RequiresNew:当客户端运行一个事务处理并调用EJB的一个方法时,容器管理器做如下操作:
(1) 悬挂客户端的事务处理;
(2) 开始一个新的事务处理;
(3) 调用方法;
(4) 当方法结束,恢复客户端的事物处理.
当客户端没有启动一个事务处理,容器管理器在执行这个方法之前启动一个新的事务处理.
3、Mandatory: 当客户端运行一个事务处理并调用EJB的一个方法,这个方法在客户端的事务处理范围内被执行; 当客户端没有启动一个事务处理,容器管理器将会抛错(TransactionRequiredException);
4、NotSupported: 当客户端运行一个事务处理并调用EJB的一个方法,容器管理器在调用方法之前终止客户端的事务处理,当方法执行完,再恢复客户端的事务处理; 当客户端没有启动一个事务处理,容器管理器在调用方法时不启动事务处理.
5、Supports: 当客户端运行一个事务处理并调用EJB的一个方法,在运行方法时执行客户端的事务处理; 当客户端没有启动一个事务处理,容器管理器在调用方法时不启动事务处理.
6、Never: 当客户端运行一个事务处理并调用EJB的一个方法,容器管理器将抛出一个错误(RemoteException); 当客户端没有启动一个事务处理,容器管理器在调用方法时不启动事务处理.希望可以帮到你
我感觉这里面的实际情况还是用到了ejb容器提供的强大的事务性机制,只是我们要让异常得以通知到ejb容器,然后在catch部分实现回滚。至于为什么非要用数据源了,我感觉是因为在数据源中当我将connection.close()是有可能并没有真正的close()(数据源是有优化的,所以它还可能保留了连接的信息),而simple的jdbc可能要是close()就真正的close了,但这只是我的想法!