你部署的是否事务类型是否是weblogic里面支持的,看看,而且两个bean的事务是否匹配?

解决方案 »

  1.   

    这是你的事务属性设置不当,你有一个方法的事务属性设置为NOT SURPORTED.
    当你在一个事物上下文中调用该方法时,就会抛出javax.transcation.NotSupportedException异常.把你设为NOT SURPORTED的方法的事务属性设置为SUPPORTED 或 REQUIRED(推荐),因该可以解决问题。
      

  2.   

    两个实体bean 的所有method的Transaction Attribute 都是 Required.不知对不对?
      

  3.   

    你必须先用部署设置事务属性,并将其设置为requird值就可以;
    具体设置方法得参考你的应用服务器了;
    在weblogic里好象有六种属性值;
    如:required,requirednew,supports,notsupported,mandatory,never;
      

  4.   

    如果是容器管理的Bean:
    <transaction-type>Container</transaction-type><container-transaction>
          <method>
            <ejb-name>TestBean</ejb-name>
            <method-name>*</method-name>
          </method>
          <trans-attribute>Required</trans-attribute>
    </container-transaction>在SessionBean中 如果要回滚则加入回滚标志ctx.setRollbackOnly()
    public void setSessionContext(SessionContext c) {
       this.ctx=c;       
    }
    程序结束后,会自动回滚的。 
      

  5.   

    如果是bean管理的实体bean呢?
      

  6.   

    Bean管理的事务控制如下:UserTransaction tx = ctx.getUserTransaction (); 
    tx.begin (); 
    double value = trader.getStockPrice (company); 
    if (value > 0) 
       tx.commit (); 
    else 
       tx.rollback (); 
      

  7.   

    我的session bean中的所有方法的transcation属性都是required,
    但在某方法中,不调用其它bean,只加入语句,就会抛出NotSupportedException
     InitialContext ic=new InitialContext();
     ut=(UserTransaction)ic.lookup("javax/transaction/UserTransaction");      
    ut.begin();
    ut.commit();这是为什么?
      

  8.   

    是不是在容器管理事务的情况下,如果是的话,要改成bean管理事务。