Rich UI에서의 서비스 액세스
EGL Rich UI 핸들러 또는 라이브러리에서의 서비스 액세스는 항상 비동기입니다. 요청자는 서비스로부터의 응답을 기다리지 않고 실행을 계속합니다. 사용자는 요청자가 서비스의 응답을 기다리는 중에도 사용자 인터페이스와 상호작용할 수 있습니다.
myService MyServicePart{};
call myService.myEcho("world")
returning to myCallBack
onException serviceLib.serviceExceptionHandler;
호출 뒤에 서비스는 태스크를 수행하며, 대부분의 경우에는 EGL 런타임 코드에 응답합니다. EGL 런타임 코드는 그 후 콜백 함수를 호출합니다. 콜백 함수는 서비스에 액세스하는 call 문에 지정하는, 사용자가 코드하는 Rich UI 함수입니다. EGL 런타임 코드에 의한 호출을 콜백 실행이라고 합니다. call 문에 예외 핸들러를 지정해 둔 상태에서 서비스 액세스 중에 오류가 발생하면 EGL 런타임 코드는 예외 핸들러를 호출합니다.
앞서 제시된 예제에서 myCallBack 콜백 함수(표시되어 있지 않음)는 서비스에서 리턴한 텍스트를 수신하여 이를 런타임 시에 웹 페이지에 배치합니다.
- 워크벤치 도구를 사용하여 서비스 오퍼레이션을 나타내는 EGL 인터페이스 파트를 작성합니다. 이 파트는 해당 오퍼레이션의 리턴값 및 인수 목록을 식별합니다.
- 이 인터페이스 파트를 기반으로 하는 액세스 변수를 작성합니다.
- 이 변수를 call 문에서 사용합니다. call 문은 EGL 런타임 코드가 콜백을 실행하고 호출이 실패하는 경우 런타임 시에 호출되는 예외 핸들러를 지정하는 데 필요로 하는 세부사항을 포함합니다.
Rich UI 프록시
Rich UI 애플리케이션은 서비스에 액세스하기 위해 Rich UI 프록시를 사용합니다. Rich UI 프록시는 Java™ EE를 준수하는 애플리케이션 서버에 사용자의 코드와 함께 설치되는 런타임 소프트웨어입니다.
- SOAP 서비스가 요청되면 프록시는 애플리케이션으로부터 이 요청을 수신하고, 서버에 있는 WSDL 파일을 읽고, 서비스에 전송할 SOAP 메시지를 형식화한 후 서비스 요청을 전송합니다. 서비스가 응답을 전송하면 프록시는 이 응답을 콜백 함수에 사용할 수 있도록 다시 형식화하고 애플리케이션에 전송합니다.
- 다른 유형의 서비스가 요청되는 경우 프로세스는 이와 유사하지만 더 단순합니다. 프로세스에 WSDL 파일이 포함되지 않습니다.
Rich UI 애플리케이션은 호출된 모든 서비스(같은 서버에 있는 서비스 포함)에 EGL 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로 생성된 모든 코드를 배치합니다.- 초기 변수 선언은 다음과 같을 수 있습니다.
myService MyServicePart {@BindService{}}; - 대체 선언은 다음과 같습니다.
myService MyServicePart{@dedicatedService};
- 초기 변수 선언은 다음과 같을 수 있습니다.