2013-01-14 88 views
4

我正在使用ejb-2 我收到以下异常。有人可以告诉我这是什么意思,以及可能的解决方案是什么:EJB事务回退异常

错误(致命):EJB异常:嵌套的异常是:
javax.ejb.TransactionRolledbackLocalException:提交事务时出错:;嵌套的例外是:
weblogic.transaction.internal.AppSetRollbackOnlyException

回答

2

试图找出真正的例外是什么。为此,将您的ejb转换为使用bean管理的事务。然后你可以手动提交,并可以捕获提交抛出的异常。

当使用容器管理事务时,WebLogic喜欢隐藏在提交阶段抛出的异常。通常原因是EJB层未知的数据库约束,例如。 Oracle中基于功能的唯一索引。

1

你应该刷新对数据库的更改,然后ejb可能会告诉你真正的例外。如果不起作用,请将冲突放到似乎可能导致异常的点上。通过这种方式,你可以保证找到真正的位置,也是例外的真正原因。

+0

是,'flush'是你如何执行它带来渊源考例外到地面。我通过WebLogic 12.1.1确认了容器管理的实体Bean。 – feder

1

我也遇到了同样的问题。我只想与大家分享我的经验。在上述例外中没有提到实际例外是正确的。为了揭示那个例外,我用了wlspy.jar工具。使用这个工具,我在配置的日志文件中获得了内部的sql活动。由此我得到了隐藏的sql约束异常。 配置步骤: 1)在您的weblogic服务器类路径中添加wlspy.jar。 2)在数据库源中添加与wlspy相关的配置。

例如:

JDBC:BEA:DB2:// db2host:50000; spyAttributes =(日志=(文件)/opt/bea/logs/mySpy.log;timestamp=yes)

之后,重新启动您的weblogic服务器并执行该活动。您将在mySoy.log文件中获取与数据库相关的日志。在我的情况下,我得到了实际的约束例外。

通过此链接进入: http://docs.oracle.com/cd/E21764_01/web.1111/e13753/spy.htm#JDBCD469