Java事务管理

 

 开发人员可以选择使用EJB代码的编程事务分界(Bean管理),还是使用声明性分界(容器管理) .不管 Enterprise Bean 是使用 Bean 管理还是容器管理事务分界,都是由 EJB 容器和 Sun Java System 应用服务器实施事务管理。容器和服务器实施必需的低级事务协议,如事务管理器和系统或 Sun Java System 消息队列提供者之间的二阶段提交协议、事务上下文传播、分布式二阶段提交等。

容器管理事务

Enterprise Bean 的一个主要优点是支持容器管理事务,也称为声名性事务。在具有容器管理事务的 Enterprise Bean 中,EJB 容器设置事务的边界。



注意

您可以将容器管理事务与任何 Enterprise Bean 类型(会话、实体或消息驱动型)一起使用,但实体 Bean 能使用容器管理事务。



 

容器管理事务简化开发,因为 EJB 代码不明确标记事务的边界。即,代码不包括开始和结束事务的语句。容器负责:

  •  

  • 划分事务上下文界限,并透明地传播事务上下文

     

  • 与事务管理器一起,确保事务中的所有参加者都能看到一致的结果

Bean 管理事务

EJB 规范使用 javax.transaction.UserTransaction 支持 Bean 管理事务分界。对于 Bean 管理事务,您必须执行 Java 命名和目录界面 (JNDI) 查找来获取 UserTransaction 对象。

  public   static  UserTransaction getTransaction() {
        Context initialContext 
= null;
        UserTransaction utx 
= null;
        
try{
            initialContext 
= new InitialContext();
            
//J2EE standard path is: "java:comp/UserTransaction"
            
//but in jboss is: "UserTransaction"
            utx = (javax.transaction.UserTransaction) initialContext.lookup("UserTransaction");
            
if(utx!=null)
                System.out.println(
"======UserTransaction======="+utx.getStatus()+"--"+utx.toString());
            
return utx;
        }
catch(Exception exp){
            exp.printStackTrace();
        }

        
return null;
    }



注意

您可以将 Bean 管理事务用于会话或消息驱动型 Bean,但实体 Bean 必须使用容器管理事务。

需要远程事务管理,要定义Stateful bean



 

Bean 管理事务有两种类型:

  •  

  • JDBC 类型 - 您可以使用连接接口的提交和回滚方法划分 JDBC 事务的界限。

     

  • JTA 类型 - 您调用 UserTransaction 接口的开始、提交和回滚方法划分 JTA 事务的界限。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值