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 コールバック関数 (表示されていない) が、サービスから返されたテキストを受け取り、実行時に Web ページに配置します。
- ワークベンチ・ツールを使用して、サービス・オペレーションを記述する 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 からアクセスできるサービス
- Web サービス (EGL REST-RPC サービスを含む)
- 専用サービス としてデプロイされている EGL サービス。このサービスは、Rich UI アプリケーションのその他のロジックに対して使用可能です。
このサービスは Rich UI プロキシーに対してローカルであり、Rich UI アプリケーションを送信したアプリケーション・サーバーで実行されます。専用サービスにアクセスするときには、サービス・アクセス変数のベースとしてサービス・パーツを使用する必要があります。インターフェース・パーツは使用できません。
専用サービスを使用して、その他の EGL 生成の Java サービスが実行できるタスク (データベース、ファイル・システム、またはローカル IBM® i サービス・プログラムへのアクセスなど) を実行できます。ただし、専用サービスを SOAP または EGL REST-RPC サービスとして再デプロイしていない場合は、その他のコードではこの専用サービスを使用できません。
次の一般的な制約事項に留意してください。コードが HTTP セッションを要求する場合は、コードがアプリケーション・サーバー上で実行しているのでない限り、そのコードにはアクセスできません。 特に、専用サービスが j2eeLib ライブラリー関数を呼び出す場合、サービスがテスト・サーバーにデプロイされている場合にのみ、「プレビュー」タブからサービスにアクセスできます。 開発がほとんど完了している場合は、サービス・アクセス変数宣言を変更し、すべての EGL 生成コードをデプロイします。- 初期変数宣言は以下のようになります。
myService MyServicePart {@BindService{}}; - 以下に示すのは置換です。
myService MyServicePart{@dedicatedService};
- 初期変数宣言は以下のようになります。