首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Deltaspike TransactionStrategy可选的模糊依赖项

Deltaspike TransactionStrategy可选的模糊依赖项
EN

Stack Overflow用户
提问于 2020-04-25 14:22:33
回答 1查看 173关注 0票数 0

我使用全局替代配置在apache-deltaspike.properties,中定义apache-deltaspike.properties,:

代码语言:javascript
复制
globalAlternatives.org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy=org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy

我的deltaspike-data beans.xml只有以下几个模块:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       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">
    <interceptors>
        <class>org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor</class>
    </interceptors>
</beans>

但我被下面的例外所打击,这对我来说没有任何意义:

代码语言:javascript
复制
WELD-001409: Ambiguous dependencies for type TransactionStrategy with qualifiers @Default
  at injection point [UnbackedAnnotatedField] @Inject private org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.transactionStrategy
  at org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.transactionStrategy(TransactionalInterceptor.java:0)
  Possible dependencies: 
  - Managed Bean [class org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy] with qualifiers [@Any @Default],
  - Managed Bean [class org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy] with qualifiers [@Any @Default]

显然,默认情况下,BeanManagedUserTransactionStrategy替代方案正在被激活。因为当我删除全局替代定义时,我可以看到deltaspike-data模块使用BeanManagedUserTransactionStrategy.

依赖关系版本:

  • weld-se-shaded:3.0.6#en0#

1.9.3

  • deltaspike

有什么办法绕过它吗?我需要使用ResourceLocalTransactionStrategy.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-26 11:36:57

我使用的是一种变通方法:将BeanManagedUserTransactionStrategy排除在bean扫描之外。

我在beans.xml中使用焊接特定的XML模式来完成此操作:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:weld="http://jboss.org/schema/weld/beans">
    <weld:scan>
        <weld:exclude name="org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy"/>
    </weld:scan>
    <interceptors>
        <class>org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor</class>
    </interceptors>
</beans>

通过这样做,我放弃了可移植性,这意味着这将只适用于焊接

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

https://stackoverflow.com/questions/61427124

复制
相关文章

相似问题

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