2011-07-22 34 views
0

我使用spring 3.0.5和hibernate。問題與春天aop。如何確保在提交之後調用攔截器?

  1. 攔截器正在工作。
  2. 發送域名到jms隊列。
  3. 消費者收回它並搜索域,但比數據庫提交更快,我得到空。
  4. 如何確定攔截器將在數據庫提交後調用?

    appCtx.xml

    <tx:annotation-driven order="10" /> 
    
    
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
         <property name="entityManagerFactory" ref="entityManagerFactory" /> 
        </bean> 
    
    <aop:aspectj-autoproxy /> 
    
    <bean id="domainProducerHandler" depends-on="domainEventService" 
         class="org.test.service.DomainProducerHandler" factory-method="aspectOf"> 
         <property name="domainEventService" ref="domainEventService" /> 
         <property name="order" value="1" /> 
    </bean> 
    
    ===================service class===================== 
    @SendDomainEvent 
    @Transactional 
    public ProtoMessage sendDonation(String aa) { 
        Domain domainObj = new Domain(); 
        domainRepository.saveAndFlush(domainObj); 
    
        return domain; 
    } 
    
    
    ==================interceptor class===================** 
    
    
    
    
        @AfterReturning(
        pointcut="@annotation(org.test.service.SendDomainEvent)", 
        returning="retVal") 
    public void processDomainReturn(Object retVal) {   
    
    .... 
    
    try {  
        domainEventService.publishToQueue(endDonationSuccessEvent); 
    } catch (Exception e) { 
        log.error("error during send endDonationSuccessEvent: " + e); 
    } 
    

    }

攔截器類實現Ordered接口。我將訂單參數設置爲tx:annotation-driven order =「10」,但它不起作用。

回答