2010-05-24 2 views
4

java.util.concurrent.Future 개체를 영수증 개체와 함께 반환하고 @javax.ejb.Asynchronous 주석 만 사용하려면 어떻게해야합니까?동시성 논리를 작성하지 않고 Spring에서 Future 객체를 반환하려면 어떻게해야합니까?

그리고 Spring에서 ejb 어노테이션을 처리 할 수 ​​있도록 추가 구성이 필요합니까?

필자는 동시성 논리를 직접 작성하고 싶지 않습니다.

가 여기에 작동하지 않습니다 내 시도입니다 :

@Asynchronous 
public Future<Receipt> execute(Job job) { 
    Receipt receipt = timeConsumingWork(job); 
    return receipt; 
} 

답변

6

을만큼 구성이 올바른지, 당신이해야 할 모든 입력 매개 변수로 영수증과 함께 새로운 AsyncResult 개체를 반환하는 것입니다.

@Asynchronous 
public Future<Receipt> execute(Job job) { 
    Receipt receipt = timeConsumingWork(job); 
    return new AsyncResult<Receipt>(receipt); 
} 

스프링은 <task:annotation-driven /> 요소 모두 @Async@Asynchronous 및 처리한다.

+0

가져 오기 java.util.concurrent.AsyncResult가 표시되지 않습니다. 이것을 사용하려면 무엇을 가져올 필요가 있습니까? –

+0

javax.ejb.AsyncResult 은 Java EE의 일부입니다. java.util.concurrent 패키지에 없습니다. 대안은 SpringSource에서 호환되는 org.springframework.scheduling.annotation.AsyncResult 을 사용하는 것입니다. 여기에서 다운로드 할 수 있습니다 : http://ebr.springsource.com/repository/app/ – Espen