コールバックの代わりにポーリングを使用する

Web サービスのクライアントの中には、コールバックを処理できないクライアントもあります。クライアントがコールバックを受信できない状況の詳細については、 コールバックを使用してイベントのクライアントに通知するを参照してください。

コールバックを受信できないクライアントが Web サービスを利用できるようにするには、代わりとしてポーリング インタフェースを提供します。ポーリング インタフェースでは、クライアントが定期的に呼び出して前のリクエストの結果が準備できているかを判断できる 1 つまたは複数のメソッドを提供します。

次に、Conversation.jws サンプルの Web サービスからの例を示します。

public class Conversation  
{
    /**
     * @jws:operation
     * @jws:conversation phase="start"
     */
    public void startRequest()
    {
        ...
    }


   /**     * @jws:operation     * @jws:conversation phase="continue"     */    public String getRequestStatus()    {        ...
   }
   /**     * @jws:operation     * @jws:conversation phase="finish"     */    public void terminateRequest()    { } }

クライアントは startRequest メソッドを使用してリクエストを開始します。そのクライアントは、getRequestStatus を定期的に呼び出して結果をチェックできます。getRequestStatus の呼び出しの間に、クライアントは他の処理を実行できます。getRequestStatus は、リクエストが完了するまでそのリクエストが「保留」であることを示します。クライアントが getRequestStatus を呼び出したときにリクエストの処理がすでに完了していたら、その結果がクライアントに返されます。結果を受信したクライアントは、terminateRequest を呼び出して会話を終了します。

関連トピック

Web サービスの開発サイクル

非同期性を利用して長期間の処理を実現する

会話を使用してステートを保持する