Rich UI에서의 서비스 액세스

EGL Rich UI 핸들러 또는 라이브러리에서의 서비스 액세스는 항상 비동기입니다. 요청자는 서비스로부터의 응답을 기다리지 않고 실행을 계속합니다. 사용자는 요청자가 서비스의 응답을 기다리는 중에도 사용자 인터페이스와 상호작용할 수 있습니다.

다음 코드는 "SOA에 대한 EGL 지원"에서 제시되었던 구현에 액세스합니다.
myService MyServicePart{};
call myService.myEcho("world")
     returning to myCallBack
     onException serviceLib.serviceExceptionHandler;

호출 뒤에 서비스는 태스크를 수행하며, 대부분의 경우에는 EGL 런타임 코드에 응답합니다. EGL 런타임 코드는 그 후 콜백 함수를 호출합니다. 콜백 함수는 서비스에 액세스하는 call 문에 지정하는, 사용자가 코드하는 Rich UI 함수입니다. EGL 런타임 코드에 의한 호출을 콜백 실행이라고 합니다. call 문에 예외 핸들러를 지정해 둔 상태에서 서비스 액세스 중에 오류가 발생하면 EGL 런타임 코드는 예외 핸들러를 호출합니다.

앞서 제시된 예제에서 myCallBack 콜백 함수(표시되어 있지 않음)는 서비스에서 리턴한 텍스트를 수신하여 이를 런타임 시에 웹 페이지에 배치합니다.

일반적으로 Rich UI에서 서비스에 액세스하기 위한 프로세스는 다음과 같습니다.
  1. 워크벤치 도구를 사용하여 서비스 오퍼레이션을 나타내는 EGL 인터페이스 파트를 작성합니다. 이 파트는 해당 오퍼레이션의 리턴값 및 인수 목록을 식별합니다.
  2. 이 인터페이스 파트를 기반으로 하는 액세스 변수를 작성합니다.
  3. 이 변수를 call 문에서 사용합니다. call 문은 EGL 런타임 코드가 콜백을 실행하고 호출이 실패하는 경우 런타임 시에 호출되는 예외 핸들러를 지정하는 데 필요로 하는 세부사항을 포함합니다.

Rich UI 프록시

Rich UI 애플리케이션은 서비스에 액세스하기 위해 Rich UI 프록시를 사용합니다. Rich UI 프록시는 Java™ EE를 준수하는 애플리케이션 서버에 사용자의 코드와 함께 설치되는 런타임 소프트웨어입니다.

EGL Rich UI 프록시 는 Java EE를 준수하는 애플리케이션 서버에 사용자의 Rich UI 코드와 함께 설치되는 런타임 소프트웨어입니다. 이 프록시는 애플리케이션과 애플리케이션이 액세스하는 서비스 간의 통신을 처리합니다.
  • SOAP 서비스가 요청되면 프록시는 애플리케이션으로부터 이 요청을 수신하고, 서버에 있는 WSDL 파일을 읽고, 서비스에 전송할 SOAP 메시지를 형식화한 후 서비스 요청을 전송합니다. 서비스가 응답을 전송하면 프록시는 이 응답을 콜백 함수에 사용할 수 있도록 다시 형식화하고 애플리케이션에 전송합니다.
  • 다른 유형의 서비스가 요청되는 경우 프로세스는 이와 유사하지만 더 단순합니다. 프로세스에 WSDL 파일이 포함되지 않습니다.

Rich UI 애플리케이션은 호출된 모든 서비스(같은 서버에 있는 서비스 포함)에 EGL Rich UI 프록시를 사용하여 액세스하려 시도합니다.

Rich UI에서 액세스할 수 있는 서비스

Rich UI 애플리케이션은 다음 유형의 서비스에 액세스할 수 있습니다.
  • 웹 서비스(EGL REST-RPC 서비스 포함)
  • Rich UI 애플리케이션의 다른 로직에서 사용할 수 있는, 전용 서비스로 배치된 EGL 서비스. 이 서비스는 Rich UI 프록시에게 로컬이며 Rich UI 애플리케이션을 전송한 애플리케이션 서버에서 실행됩니다. 전용 서비스에 액세스할 때는 서비스 액세스 변수의 기반으로 서비스 파트를 사용해야 합니다. 인터페이스 파트는 사용할 수 없습니다.

    전용 서비스를 사용하여 다른 EGL로 생성된 Java 서비스가 수행할 수 있는 태스크(데이터베이스, 파일 시스템 또는 IBM® i 서비스 프로그램에 액세스)를 수행할 수 있습니다. 그러나 전용 서비스는 이를 SOAP 또는 EGL REST-RPC 서비스로 다시 배치하지 않는 한 다른 코드에서 사용할 수 없습니다.

    다음 일반 제한사항에 주의하십시오. 코드에서 HTTP 세션을 필요로 하는 경우에는 해당 코드가 애플리케이션 서버에서 실행 중이 아닌 한 이 코드에 액세스할 수 없습니다. 특히, 전용 서비스에서 j2eeLib 라이브러리 함수를 호출하는 경우에는 서비스가 테스트 서버에 배치된 경우에만 미리보기 탭에서 해당 서비스에 액세스할 수 있습니다. 개발이 아직 완료되지 않은 경우에는 서비스 액세스 변수를 변경한 후 EGL로 생성된 모든 코드를 배치합니다.
    1. 초기 변수 선언은 다음과 같을 수 있습니다.
      myService MyServicePart {@BindService{}};
    2. 대체 선언은 다음과 같습니다.
      myService MyServicePart{@dedicatedService};