Я определяю TransactionStrategy в apache -deltaspike.properties , используя конфигурацию глобальных альтернатив:
globalAlternatives.org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy=org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy
My bean. xml имеет модуль deltaspike-data Только для перехватчика:
<?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>
Но меня поражает исключение, описанное ниже, которое не имеет для меня никакого смысла :
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 .
Версии зависимостей:
- сварной шов: 3.0.6. Финал
- deltaspike: 1.9.3
Любые идеи о том, как обойти это? Мне нужно использовать ResourceLocalTransactionStrategy .