Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa Deltaspike 0.5@事务性问题:JTA事务似乎不起作用;如果没有EntityManager,也可以获得NPE_Jpa_Transactional_Wildfly_Deltaspike - Fatal编程技术网

Jpa Deltaspike 0.5@事务性问题:JTA事务似乎不起作用;如果没有EntityManager,也可以获得NPE

Jpa Deltaspike 0.5@事务性问题:JTA事务似乎不起作用;如果没有EntityManager,也可以获得NPE,jpa,transactional,wildfly,deltaspike,Jpa,Transactional,Wildfly,Deltaspike,我们正在将应用程序部署到WildFly 8.0.0.Final。该应用程序曾在Jboss EAP 6.0/AS7.1上运行,Seam3管理JTA事务 然而,由于Seam3不适用于WildFly,我们将用DeltaSpike替换它。 我们部署了核心和jpa模块。然而,它似乎不能很好地与mysql XA数据源配合使用,即使我们努力按照他们网站上的说明操作,并添加了apache-deltaspike.properties文件以支持JTA。当涉及多个数据源时,我们会看到事务错误。通过打开org.jbos

我们正在将应用程序部署到WildFly 8.0.0.Final。该应用程序曾在Jboss EAP 6.0/AS7.1上运行,Seam3管理JTA事务

然而,由于Seam3不适用于WildFly,我们将用DeltaSpike替换它。 我们部署了核心和jpa模块。然而,它似乎不能很好地与mysql XA数据源配合使用,即使我们努力按照他们网站上的说明操作,并添加了apache-deltaspike.properties文件以支持JTA。当涉及多个数据源时,我们会看到事务错误。通过打开org.jboss.jca的跟踪级别日志记录,我们可以看到诸如无法从当前数据源中列出另一个数据源以及jdbc驱动程序失败等警告


我们看到的另一个问题是@Transactional需要EntityManager的存在。但有时,我们必须在运行时查找entitymanager,而不是注入entitymanager。在这种情况下,我们将得到NullPointerException。我们必须注入entitymanager,即使我们不需要它,只是为了使@Transactional不抛出NPE。

有什么例外?为什么需要XA数据源?您有多个参与事务的数据库/事务资源?是的,我们有多个参与事务的数据源,这在seam3事务模块中运行良好。原因是我们必须动态地选择一个数据源,但是在mysql数据源配置中,我们按服务器实例配置数据源,因为一个服务器实例上有太多的数据源。所以查询/更新总是在一个已知的数据源上登陆,然后在jpa本地查询(更新)中使用模式前缀。我不知道是Wildfly JCA或Deltaspike的jpa事务拦截器在jta上被破坏了。根据Deltaspike,JTA是受支持的,我们遵循指示。但经过几天的尝试,它没有起作用。对于Deltaspike中的NPE,我们必须注入EntityManager,即使我们并不总是需要em。代码的某些方法不需要事务(例如代码更新文件),但Deltaspike抛出NPE。这很烦人,我真的希望Seam3事务在Wildfly中工作。npe如下:org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy.beforeProcedue(BeanManagedUserTransactionStrategy.java:119)[deltaspike-jpa-module-impl-0.5.jar:0.5]我认为如果没有Entitymanager只是不启动事务,那么代码中应该有Entitymanager的空检查