2013-12-17 11 views
3

DB 레코드를 읽고 백그라운드 당 하나의 명령 (CDI Bean)을로드하고 명령을 실행하는 백그라운드 스레드를 돌리는 비동기 명령 프로세서 모듈이 있습니다. Weld-SE 컨테이너를 이용한 Arquillian 테스트가 잘 작동합니다. 그러나 이것을 JBoss EAP 6.1.1의 JBoss Module 인 JavaEE 환경에 넣으면 @Transactional 주석이 적용되지 않습니다. 백그라운드 메소드는 트랜잭션없이 실행됩니다. 따라서 엔티티에 대한 변경은 DB에 결코 적용되지 않습니다.Seam 3 @ Java EE 환경에서 트랜잭션 주석이 작동하지 않습니다.

이 메시징 모듈에 따라 클라이언트 모듈은, 내가 Seam @Transactional annotation not working?에서 언급 한 트릭을 시도했지만 문제가 해결되지 않은 bean.xml

<beans xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:s="urn:java:ee" 
    xmlns:t="urn:java:org.jboss.seam.transaction" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> 

    <interceptors> 
    <class>org.jboss.seam.transaction.TransactionInterceptor</class> 
    </interceptors> 
</beans> 

이있다.

왜 그런지 알고 싶습니다.

+0

이것은 실제로 EAP 6.1.1의 버그입니다. RedHat에 지원 문제를 제기하십시오. –

+0

@JohnAment - 왜 그것이 EAP 버그라고 생각합니까? Seam 3는 EAP 6와 함께 배송/지원되지 않습니다. – apurohit

+0

EAP에서 인터셉터를로드하는 데 문제가 있습니다. –

답변

0

프로젝트 구조가 확실하지 않지만 beans.xml이 현재있는 bean 아카이브에서만 작동한다는 것을 고려해야합니다. 따라서 작동시킬 모든 Bean 아카이브에서 인터셉터를 활성화해야합니다 (CDI 1.0). CDI 1.1을 사용하면 전세계에서 인터셉터를 사용할 수 있습니다.