EJB事务回滚异常

时间:2013-01-14 07:39:24

标签: java java-ee ejb weblogic rollback

我正在使用ejb-2 我得到以下异常。有人能告诉我这意味着什么,以及可能的解决办法是什么:

  

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

您应该将更改刷新到数据库,然后ejb可能会向您显示真正的异常。如果不起作用,请将flush置于可能导致异常的点。通过这种方式,您可以保证找到真实的位置以及异常的真正原因。

答案 2 :(得分: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