2013-09-25 43 views
0

我們有一個觸發作業並執行一些導入/導出處理的計時器。但是在提交時我們打開標題中的錯誤。我們已經嘗試了幾種解決方案已經:ARJUNA016053:無法提交事務 - JavaEE6計時器

1)創建2類:

@Stateless 
public class MyBean { 
    @Inject 
    @JpaForJobs 
    private EntityManager em; 

    @Inject 
    private MyService1 service1; 

    @TransactionAttribute(TransactionAttributeType.REQUIRED) 
    public void migrate(...) { 
     service1.create(...); 
    } 
} 
@Startup 
@Singleton 
public class MyService1 implements Job { 
    @Resource 
    TimerService timerService; 

    @Inject 
    private MyBean myBean; 

    @Timeout 
    public void trigger(Timer timer) { 
     migrate(); 
    } 

    private void migrate() { 
     myBean.migrate(); 
    } 
} 

作品,但有時當關系變得複雜,它失敗。示例客戶有學生有父母有貓。

我也試過Bean管理的事務,但同樣的結局:

@Stateless 
@TransactionManagement(TransactionManagementType.BEAN) 
public class MyBean { 
    @Inject 
    @JpaForJobs 
    private EntityManager em; 

    @Inject 
    private MyService1 service1; 

    public void migrate(...) { 
     utx.begin(); 
     service1.create(...); 
     utx.commit(); 
    } 
} 
@Startup 
@Singleton 
public class MyService1 implements Job { 
    @Resource 
    TimerService timerService; 

    @Inject 
    private MyBean myBean; 

    @Timeout 
    public void trigger(Timer timer) { 
     migrate(); 
    } 

    private void migrate() { 
     myBean.migrate(); 
    } 
} 

任何想法或建議?謝謝。

回答

0

原來,方法1部作品,它只是我需要更換:

@TransactionAttribute(TransactionAttributeType.REQUIRED)

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)

而且我解析XML文件時遇到了一些問題。注意懶惰的領域和BeanUtils.cloneBean。

相關問題