EJB 비동기 메소드에 대한 클라이언트 프로그래밍 모델

EJB(Enterprise JavaBeans) 3.1 스펙에 명시된 것처럼 로컬 비즈니스, 원격 비즈니스 또는 비인터페이스 보기의 인터페이스 유형을 통해 EJB 비동기 메소드를 호출할 수 있습니다. EJB 2.1 클라이언트 보기 또는 웹 서비스 보기를 통한 호출은 허용되지 않습니다.

EJB 비동기 메소드에 대한 인터페이스 스펙의 리턴 유형은 void 또는 유형 java.util.concurrent.Future <V>여야 합니다. 다른 리턴 유형은 인터페이스에서 지원되지 않습니다. EJB 3.1 스펙에서 언급된 것처럼 Bean 구현 메소드도 동일한 리턴 유형을 가져야 합니다.

애플리케이션이 EJB 비동기 메소드 호출 결과를 검사할 필요가 없는 경우에는 void 리턴 유형의 인터페이스 서명을 사용하십시오. 반대로 애플리케이션이 EJB 비동기 메소드 호출 결과를 검사해야 하는 경우에는 Future<V> 리턴 유형의 인터페이스를 사용하십시오.

결과 검사 여부를 고려하는 것뿐만 아니라 클라이언트는 예외 처리도 준비해야 합니다. EJB 3.1 스펙에 언급된 것처럼 클라이언트는 컨테이너가 실행을 위해 비동기 메소드를 스케줄해야 하는 내부 자원을 할당할 수 없는 경우 예외를 수신합니다. 이런 경우, 클라이언트는 비동기 메소드가 실행되지 않는 것으로 간주할 수 있습니다. 또한, 비동기 메소드가 비클라이언트 스레드에서 실행 중인 경우에도 예외가 발생할 수 있습니다.

중요: 비동기 메소드가 리턴 유형이 void인 경우 클라이언트는 예외 정보를 검색하는 메커니즘이 없습니다. 이런 경우 EJB 컨테이너는 정보 메시지를 로그합니다. 그렇지만 리턴 유형이 Future<V>인 비동기 메소드의 경우 EJB 컨테이너는 예외 정보를 Future<V> 오브젝트에 저장합니다. 이런 경우, Future<V> 오브젝트에 연관된 get 메소드는 ExecutionException 예외를 발생시킵니다. 클라이언트는 예외에 대한 세부사항을 검색하기 위해 ExecutionException에서 getCause 메소드를 호출합니다.

클라이언트는 비동기 메소드가 get 메소드 호출 시에 실행을 완료하지 않은 경우 Future<V> 오브젝트의 get 메소드가 클라이언트 스레드를 차단하는 것을 알아야 합니다. 클라이언트에 이 동작이 필요하지 않은 경우 정기적으로 isDone 메소드를 호출하여 비동기 메소드가 완료되는 시기를 판별하기 위해 Future<V> 오브젝트를 폴링할 수 있습니다.

마지막으로 클라이언트는 Future<V> 오브젝트를 사용하여 비동기 메소드 호출을 취소할 수 있습니다. 비동기 메소드 호출이 실행 대기 중인 동안 이를 취소하려고 하면 이는 실행되지 않으며 Future<V> 오브젝트와의 다른 상호작용은 취소를 반영합니다. 또는, 실행을 시작한 후에 비동기 메소드 취소를 시도하는 경우 이는 계속 실행되지만 Bean 메소드는 클라이언트가 호출 취소를 시도한 것을 여전히 판별할 수 있으며 애플리케이션 특정 리턴 값이나 예외로 응답할 수 있습니다.

클라이언트가 get 메소드를 사용하는 다른 대안은 제한시간 초과 매개변수를 사용하는 것입니다. 이 get 메소드는 지정한 제한시간 기간 동안만 결과를 대기합니다. get 메소드는 메소드가 실행을 완료하는 즉시 또는 메소드 실행이 완료되지 않더라도 제한시간이 만료될 때 클라이언트로 돌아갑니다.

중첩된 비동기 호출이 지원됩니다. 비동기 메소드 호출은 비동기 메소드 내에서 수행 가능합니다.
문제점 방지 문제점 방지: 중첩된 비동기 메소드가 호출되면 충분한 자원(최대 스레드 수, 작업 요청 큐 크기)이 허용되도록 작업 관리자 설정을 고려하십시오. 자세한 정보는 비동기 메소드에 대한 EJB 컨테이너 작업 관리자에 대해 읽으십시오. gotcha

EJB 비동기 메소드를 호출하는 클라이언트 코드 개발에 대해서도 읽으십시오.


주제 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_amclientpmodel
파일 이름:cejb_amclientpmodel.html