EJB 3.1 비동기 메소드
EJB(Enterprise JavaBeans™) 3.1 스펙에는 호출자 스레드의 별도 스레드에서 실행되는 애플리케이션 개발자가 EJB 비동기 메소드 구성에 사용할 수 있는 기능이 포함됩니다.
이 메커니즘은 클라이언트 호출 요청을 실제 메소드 호출에서 분리합니다. 클라이언트 스레드는 EJB 컨테이너에서 지시되는 대로 EJB 메소드가 별도의 스레드에서 실행되는 동안 다른 작업을 계속 수행할 수 있습니다.
나중에 클라이언트는 비동기 메소드 실행 결과를 검사할 수 있으며 이를 실행 및 리턴이라고도 합니다. 이 경우, EJB 컨테이너는 java.util.concurrent.Future<V> 인터페이스를 구현하는 오브젝트를 클라이언트에 리턴합니다. 클라이언트는 이 오브젝트를 사용하여 비동기 메소드 호출에서 상태, 결과 또는 실행을 확인할 수 있습니다. 또는, 비동기 메소드는 어떤 결과도 리턴하지 않는데, 이를 실행 후 잊음이라고도 합니다.
자세한 정보는 애플리케이션에서 EJB 비동기 메소드 사용 방법에 대한 정보를 참조하십시오.
다음은 EJB 비동기 메소드에 대한 일부 예제 사용 시나리오입니다.
- 애플리케이션에는 몇 개의 독립된 작업 단위가 있으며 이는
최종 결과를 작성하기 위해 모두 실행되어야 합니다. 예를 들어, 여행 예약이
다음과 같은 세 파트로 구성된다고 가정해 보십시오.
- 항공권 예약.
- 렌터카 예약.
- 호텔 예약.
- 애플리케이션에는 반드시 실행해야 하는 몇 개의 독립된 작업 단위가 있지만
애플리케이션은 이 작업 결과에는 관여하지 않습니다. 예를 들어, 소매상이 4개의
지점을 소유하고 있고 본사에서는 영업일이 끝날 때 각 상점에서의 판매 보고서를 인쇄하려고
합니다. 애플리케이션 개발자는 EJB 비동기 메소드를 일괄처리 메커니즘으로 사용할
수 있습니다. 여러 개의 EJB 메소드 호출은 판매 보고서 가져오기 요청의 일괄처리를 각 지점별로
하나씩 보내는 데 사용할 수 있습니다.
이 예에서 애플리케이션은 이 메소드 호출 결과를 확인할 필요가 없을 것입니다. 아마도 이는 다음날 아침에 프린터에서 판매 보고서를 가져오는 본사 직원이 처리할 것입니다. 지점 중 하나가 요청한 보고서를 보내지 않았다고 가정해 보십시오. 보고서를 가져오는 담당자는 예상했던 상황이라거나(예를 들어, 지점이 리노베이션으로 인해 휴점 상태) 또는 판매 보고서 가져오기 요청을 해당 지점에 다시 보내야 하는지를 결정할 수 있습니다.