Rich UI 외부에서의 서비스 동기 호출

Rich UI 외부에서의 서비스 호출은 항상 동기이며, 이는 요청자가 서비스로부터 응답이 오기를 기다린다는 것을 의미합니다.

서비스 액세스 명령문의 구문은 다음과 같습니다.
returnValueVariable = serviceName.operationName(argumentList) {timeout = milliseconds};
returnValueVariable
리턴값을 수신하는 변수의 이름
serviceName
인터페이스 또는 서비스 파트를 기반으로 하는 변수의 이름
operationName
인터페이스 파트 함수 프로토타입의 이름
argumentList
쉼표를 사용하여 구분된 인수의 목록

인수에 대한 제한사항은 "서비스 액세스에 사용되는 프로토타입의 제한사항"을 참조하십시오.

milliseconds
EGL 런타임 코드가 웹 서비스를 호출하고 응답을 수신하기까지 기다리는 최대 유효 밀리초 수입니다. 이 시간이 경과하면 EGL 런타임 코드는 ServiceInvocationException 예외를 처리합니다. 이 설정은 EGL로 생성된 COBOL 코드에는 아무런 영향을 주지 않습니다.
제한시간을 설정하려면 다음 작업을 수행하십시오.
  • 로컬 네트워크 트래픽, 인터넷 트래픽 및 서버 응답 시간과 같은 다양한 요소를 고려하십시오. 이러한 요소는 서로 다른 조건에서의 동일 서비스에 대한 두 호출의 응답에 서로 다른 시간이 소요될 수 있음을 의미합니다.
  • 애플리케이션의 특성을 고려하십시오. 코드에서 신용 승인을 기다리고 있는 경우에는 사용자에 대한 이중 청구를 방지하기 위해 긴 제한시간을 설정하는 것이 좋습니다. 코드에서 온라인 경매의 입찰을 수행하고 있는 경우에는 사용자가 다른 입찰을 빠르게 수행할 수 있도록 짧은 제한시간을 설정하는 것이 좋습니다.
  • 1초 이상 차이가 나는 여러 제한시간 값을 사용하십시오.

defaultServiceTimeout 빌드 디스크립터 옵션에 milliseconds의 기본값을 설정할 수 있습니다. defaultServiceTimeout 빌드 디스크립터 옵션에는 설정되어 있는 기본값이 없습니다. defaultServiceTimeoutmilliseconds에 모두 값을 지정하지 않으면 서비스 호출이 제한시간을 초과하지 않습니다. 자세한 정보는 "defaultServiceTimeout"을 참조하십시오.

try 블록

유형이 AnyException인 예외 레코드에 대해 테스트하려면 try 블록을 사용하십시오.

try 
   myString = myService.myOperation(1);
   onException (except AnyException)
   case 
      when (exp isa ServiceBindingException)
         ;
      when (exp isa ServiceInvocationException)
         ;
      otherwise
         ; 
   endend
다음 위치에서는 오류가 발생할 수 있습니다.
  • 서비스 바인딩(코드에 서비스 액세스가 지정되는 방식). 이 오류는 배치 디스크립터의 문제점과 연관되어 있을 수 있습니다.
  • 요청자와 서비스 간의 통신
  • 서비스

서비스 바인딩에서 문제점이 발생하면 ServiceBindingException이 발생합니다. 다른 문제점은 더 가능성이 낮은 ServiceInvocationException 또는 RuntimeException을 발생시킵니다.