Rich UI でのサービス・アクセス

EGL Rich UI ハンドラーまたはライブラリーでのサービス・アクセスは常に非同期 です。 リクエスターは、サービスからの応答を待機することなく処理を続行します。 ユーザーは、リクエスターがサービスからの応答を待機している間も、ユーザー・インターフェースと対話できます。

『EGL での SOA サポート』に示されている実装にアクセスするコードを以下に示します。
myService MyServicePart{};
call myService.myEcho("world")
     returning to myCallBack
     onException serviceLib.serviceExceptionHandler;

サービスは、起動されるとタスクを実行し、ほとんどの場合、EGL ランタイム・コードに応答します。次に EGL ランタイム・コードはコールバック関数を呼び出します。コールバック関数は、ユーザーがコーディングし、サービスにアクセスする call 文に指定する Rich UI 関数です。EGL ランタイム・コードによる起動は、コールバックの発行 と記述されています。call 文に例外ハンドラーを指定している場合にサービス・アクセス中にエラーが発生すると、EGL ランタイム・コードにより例外ハンドラーが呼び出されます。

前述の例では、myCallBack コールバック関数 (表示されていない) が、サービスから返されたテキストを受け取り、実行時に Web ページに配置します。

通常、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 アプリケーションからアクセスできるサービスの種類を以下に示します。
  • Web サービス (EGL REST-RPC サービスを含む)
  • 専用サービス としてデプロイされている EGL サービス。このサービスは、Rich UI アプリケーションのその他のロジックに対して使用可能です。 このサービスは Rich UI プロキシーに対してローカルであり、Rich UI アプリケーションを送信したアプリケーション・サーバーで実行されます。専用サービスにアクセスするときには、サービス・アクセス変数のベースとしてサービス・パーツを使用する必要があります。インターフェース・パーツは使用できません。

    専用サービスを使用して、その他の EGL 生成のJava サービスが実行できるタスク (データベース、ファイル・システム、またはローカル IBM® i サービス・プログラムへのアクセスなど) を実行できます。ただし、専用サービスを SOAP または EGL REST-RPC サービスとして再デプロイしていない場合は、その他のコードではこの専用サービスを使用できません。

    次の一般的な制約事項に留意してください。コードが HTTP セッションを要求する場合は、コードがアプリケーション・サーバー上で実行しているのでない限り、そのコードにはアクセスできません。 特に、専用サービスが j2eeLib ライブラリー関数を呼び出す場合、サービスがテスト・サーバーにデプロイされている場合にのみ、「プレビュー」タブからサービスにアクセスできます。 開発がほとんど完了している場合は、サービス・アクセス変数宣言を変更し、すべての EGL 生成コードをデプロイします。
    1. 初期変数宣言は以下のようになります。
      myService MyServicePart {@BindService{}};
    2. 以下に示すのは置換です。
      myService MyServicePart{@dedicatedService};

フィードバック