我们正在将应用程序部署到 WildFly 8.0.0.Final。该应用程序过去在 Jboss EAP 6.0/AS7.1 上运行良好,Seam3 管理 JTA 事务。
然而,由于 Seam3 不适用于 WildFly,我们将其替换为 DeltaSpike。我们部署了 core 和 jpa 模块。但是,它似乎不适用于 mysql XA 数据源,即使我们努力遵循他们网站上的说明并添加 apache-deltaspike.properties 文件以启用 JTA 支持。当涉及多个数据源时,我们会看到事务错误。通过打开 org.jboss.jca 的跟踪级别日志记录,我们会看到无法从当前数据源中列出另一个数据源和 jdbc 驱动程序失败等警告。
我们看到的另一个问题是@Transactional 需要存在EntityManager。但有时,我们必须在运行时查找实体管理器,而不是注入一个。在这种情况下,我们会得到 NullPointerException。我们必须注入一个实体管理器,即使我们不需要它只是为了让@Transactional 不抛出 NPE。