求教高手ejb的事务问题! 你部署的是否事务类型是否是weblogic里面支持的,看看,而且两个bean的事务是否匹配? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是你的事务属性设置不当,你有一个方法的事务属性设置为NOT SURPORTED.当你在一个事物上下文中调用该方法时,就会抛出javax.transcation.NotSupportedException异常.把你设为NOT SURPORTED的方法的事务属性设置为SUPPORTED 或 REQUIRED(推荐),因该可以解决问题。 两个实体bean 的所有method的Transaction Attribute 都是 Required.不知对不对? 你必须先用部署设置事务属性,并将其设置为requird值就可以;具体设置方法得参考你的应用服务器了;在weblogic里好象有六种属性值;如:required,requirednew,supports,notsupported,mandatory,never; 如果是容器管理的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; }程序结束后,会自动回滚的。 如果是bean管理的实体bean呢? Bean管理的事务控制如下:UserTransaction tx = ctx.getUserTransaction (); tx.begin (); double value = trader.getStockPrice (company); if (value > 0) tx.commit (); else tx.rollback (); 我的session bean中的所有方法的transcation属性都是required,但在某方法中,不调用其它bean,只加入语句,就会抛出NotSupportedException InitialContext ic=new InitialContext(); ut=(UserTransaction)ic.lookup("javax/transaction/UserTransaction"); ut.begin();ut.commit();这是为什么? 是不是在容器管理事务的情况下,如果是的话,要改成bean管理事务。 java基础,却难倒了好多大牛 简单的JS的问题。 struts2多级下拉导航菜单 hibernate 求助把具有相同属性的多个对象合并到一个表格中显示的问题 Hibernate调用存储过程 获得多返回值问题 servlet异常问题 Tomcat突然生病?寻良医! dba方向跟程序员方向那个有前途 webwork标签问题 j2ee怎么配 请问使用EJB要安装哪些东西?
当你在一个事物上下文中调用该方法时,就会抛出javax.transcation.NotSupportedException异常.把你设为NOT SURPORTED的方法的事务属性设置为SUPPORTED 或 REQUIRED(推荐),因该可以解决问题。
具体设置方法得参考你的应用服务器了;
在weblogic里好象有六种属性值;
如:required,requirednew,supports,notsupported,mandatory,never;
<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;
}
程序结束后,会自动回滚的。
tx.begin ();
double value = trader.getStockPrice (company);
if (value > 0)
tx.commit ();
else
tx.rollback ();
但在某方法中,不调用其它bean,只加入语句,就会抛出NotSupportedException
InitialContext ic=new InitialContext();
ut=(UserTransaction)ic.lookup("javax/transaction/UserTransaction");
ut.begin();
ut.commit();这是为什么?