我正在使用 ejb-2 我得到以下异常。有人可以告诉我这是什么意思,以及可能的解决方案是什么:
错误(致命):EJB 异常:; 嵌套异常是:
javax.ejb.TransactionRolledbackLocalException: Error committing transaction:; 嵌套异常是:
weblogic.transaction.internal.AppSetRollbackOnlyException
我正在使用 ejb-2 我得到以下异常。有人可以告诉我这是什么意思,以及可能的解决方案是什么:
错误(致命):EJB 异常:; 嵌套异常是:
javax.ejb.TransactionRolledbackLocalException: Error committing transaction:; 嵌套异常是:
weblogic.transaction.internal.AppSetRollbackOnlyException
尝试找出真正的例外是什么。为此,请将您的 ejb 转换为使用 bean 管理的事务。然后您可以手动提交并捕获提交引发的异常。
WebLogic 喜欢在使用容器管理事务时隐藏提交阶段抛出的异常。通常原因是 EJB 层不知道的数据库约束,例如。Oracle 中基于函数的唯一索引。
我也面临同样的问题。我只是想和大家分享我的经验。在上述例外中没有提及实际例外是正确的。为了揭示该异常,我使用了 wlspy.jar工具。使用此工具,我在配置的日志文件中获得了内部 sql 活动。因此,我得到了隐藏的 sql 约束异常。配置步骤: 1) 在您的 weblogic 服务器类路径中添加 wlspy.jar。2)在数据库源中添加wlspy相关的配置。
例如:
jdbc:bea:DB2://db2host:50000;spyAttributes=(log=(file)/opt/bea/logs/mySpy.log;timestamp=yes)
之后重新启动您的 weblogic 服务器并执行该活动。您将在 mySoy.log 文件中获得与数据库相关的日志。就我而言,我得到了实际的约束异常。
通过此链接: http ://docs.oracle.com/cd/E21764_01/web.1111/e13753/spy.htm#JDBCD469
您应该刷新对数据库的更改,然后 ejb 可能会向您显示真正的异常。如果不起作用,请将 flush 到似乎可能导致异常的点。通过这种方式,您可以保证找到真正的位置以及异常的真正原因。