My scenary:一个Java EE应用程序,它从EJB调用一个方法,这两个方法都托管在JBoss AS 7.1.1服务器中。在CRUD页面中的插入和更新操作期间,JSF应用程序必须使用自己的DataSource保存自己的数据,并通过调用EJB方法将其他数据保存在其他应用程序中,这将使用其他DataSource。两个DataSource都配置为使用JTA (JBoss DataSource参数中标记的JTA复选框);
仅在更新操作期间,保存数据的尝试会引发异常。异常堆栈的最后部分如下:
update()
当我在EJB DataSource中禁用JTA时,问题就会消失。
我的环境出了什么问题?
提前致谢!
我被要求提供更多信息,所以就这样了。
这是使问题发生的用例:
两个DS都是同一数据服务器的路径,两个应用程序都托管在同一个JBoss实例中。
第一种方法工作正常,第二种方法产生错误。由于抛出异常,整个事务将被回滚,并且数据库中没有任何实际发生。
在我的理解中,这是一个简单的应用程序集成案例,其中一个应用程序通过使用Java EE标准技术(即EJB调用)集成到另一个应用程序。
我希望这有助于我的理由。
答案 0 :(得分:0)
我没有准确了解序列的样子。 我猜你的JSF应用程序使用的是一个使用另一个DS的EJB,对吧? 所以它是相同的应用程序和服务器。
如果你有多个DS,你需要有一个xa-datasource,你有吗? 如果您还有其他问题,请分享您的DS配置以及有关配置/应用程序的更多信息以及logile中的警告(最好是完整的呼叫顺序)。