楼主用EJB3.0应该可以比较简单的处理这种问题啊
@TransactionAttribute

解决方案 »

  1.   

    EJB2 里不也有事务属性吗?就是不太清楚这种事务机制。应该不算是嵌套事务吧
      

  2.   

    一个事务。 这样失败的话就会完整的回滚。 可以加在Session Bean上。
      

  3.   

    基本上是下面这个意思,在SessionBean中的添加方法。:先添加主表中的数据,然后循环添加从表中的数据,有时候这个事务方法可能持续时间比较长。主要是根据从表中的数据多少有关系。我想这也是发生死锁的关键原因吧。不知道需要在哪设置事务级别。 /**
     * @ejb.interface-method
     * @ejb.transaction
     *   type="Required"
     */
    public void addData(TempData data)
    throws FinderException, CreateException {
    //添加原始数据
    AEntityBeanLocal aEntityLocal =
    aHome().create(id);
    aEntityLocal.setValue(value);
    //添加从表数据
    Iterator it = ....
    while (it.hasNext()) {
    bHome.create(id);
    bHome.setValue(value);
    }
      

  4.   

    一、这个过程一共有多少个事务?----------------------
    EJB的事务范围是跟方法有关的,并且是可能传递的1  起始方法       方法A
    2  被调用方法     方法B--方法A可以启动一个事务,也可以不启动事务
    --方法B被方法A调用,方法B可以加入方法A的事务中,也可以不加入方法A的事务中,也可以自己单独启动一个自己的事务方法B的事务属性为NotSupported
       方法A启动一个事务,调用方法B,方法B不加入方法A的事务,也不单独启动自己的事务,事务在A,B交界处挂起,方法B完成后方法A的事务继续方法B的事务属性为Supports
       方法A启动一个事务,调用方法B,方法B加入方法A的事务
       方法A没有事务,调用方法B,方法B也不产生自己的事务方法B的事务属性为Required
        方法A启动一个事务,调用方法B,方法B加入方法A的事务
        方法A没有事务,调用方法B,方法B就产生自己的事务方法B的事务属性为RequiresNew
        方法A启动一个事务,调用方法B,方法B不加入方法A的事务,而是自己产生自己的新事务
        方法A没有事务,调用方法B,方法B就产生自己的事务方法B的事务属性为Mandatory
        方法A启动一个事务,调用方法B,方法B加入方法A的事务
        方法A没有事务,调用方法B,方法B就产生一个异常方法B的事务属性为Never
       方法A启动一个事务,调用方法B,方法B就产生一个异常
       方法A没有事务,调用方法B,方法B也不产生事务
      

  5.   

    Required-----------  CMP必须支持
    RequiresNew---------- CMP必须支持
    Mandatory----------- CMP必须支持
      

  6.   

    NotSupported
    Supports
    Never这种事务属性可能有的容器的CMP就不支持了