首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Deltaspike替代TransactionStrategy问题

Deltaspike替代TransactionStrategy问题
EN

Stack Overflow用户
提问于 2018-02-01 20:20:05
回答 2查看 766关注 0票数 1

在我的野蝇群应用程序中,我希望与数据模块JPA和JTA一起使用deltaspike。

我已经将我的EnvironmentAwareTransactionStrategy定义为如下所示,以使用TransactionStrategy.

代码语言:javascript
复制
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.1" bean-discovery-mode="all">
<alternatives>
    <class>org.apache.deltaspike.jpa.impl.transaction.EnvironmentAwareTransactionStrategy</class>
</alternatives>

但是,当我运行我的应用程序时,会抛出这个异常:

代码语言:javascript
复制
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.getTransaction(AbstractEntityManagerImpl.java:1333)
at org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.getTransaction(ResourceLocalTransactionStrategy.java:372)
at org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.rollbackAllTransactions(ResourceLocalTransactionStrategy.java:338)
at org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:155)
at org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57)

CDI使用默认的TransactionStrategy (ResourceLocalTransactionStrategy),而不是在ResourceLocalTransactionStrategy中定义的替代一个(EnvironmentAwareTransactionStrategy)。

文件beans.xml位于和my pom.xml中。

代码语言:javascript
复制
    <dependency>
        <groupId>org.wildfly.swarm</groupId>
        <artifactId>datasources</artifactId>
    </dependency>
    <dependency>
        <groupId>org.wildfly.swarm</groupId>
        <artifactId>jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.wildfly.swarm</groupId>
        <artifactId>cdi</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.deltaspike.core</groupId>
        <artifactId>deltaspike-core-api</artifactId>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.deltaspike.core</groupId>
        <artifactId>deltaspike-core-impl</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.deltaspike.modules</groupId>
        <artifactId>deltaspike-data-module-api</artifactId>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.deltaspike.modules</groupId>
        <artifactId>deltaspike-data-module-impl</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.deltaspike.modules</groupId>
        <artifactId>deltaspike-jpa-module-api</artifactId>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.deltaspike.modules</groupId>
        <artifactId>deltaspike-jpa-module-impl</artifactId>
        <scope>runtime</scope>
    </dependency>

我该怎么做?

EN

回答 2

Stack Overflow用户

发布于 2018-02-01 20:40:27

我通过以下示例成功地使其工作:https://github.com/wildfly-swarm/wildfly-swarm-examples/tree/master/jaxrs/jaxrs-deltaspike-data

我已采取以下行动:

1/已删除的alternatives in beans.xml

2/在包含apache-deltaspike.propertiessrc/main/resources/META-INF中添加globalAlternatives.org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy=org.apache.deltaspike.jpa.impl.transaction.ContainerManagedTransactionStrategy

票数 0
EN

Stack Overflow用户

发布于 2018-02-11 02:23:17

Deltaspike给出了更多解释:

https://deltaspike.apache.org/documentation/jpa.html

如果某些版本的Weld (包括几个版本的JBoss EAP/Wildfly和Websphere Liberty )或OpenWebBeans处于BDA模式(这不是默认的),您必须将它配置为全局替代(而不是beans.xml中的替代)。

https://deltaspike.apache.org/documentation/spi.html#GlobalAlternative

他们建议使用apache-deltaspike.properties作为解决办法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48571081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档