他のサービスをポーリングして情報を取得するには
非同期コールバックをサポートしていない Web サービスと通信する場合、結果を取得するまで Web サービスをポーリングする必要があります。ポーリングでは、一定間隔で関数を呼び出して結果を取得できるかどうかをチェックします。
タイマー コントロールを使用すると、これを簡単に実現できます。
ポーリング用のタイマー コントロールを Web サービスに追加するには
デザイン ビューで、対象 Web サービスを選択します。
[コントロールの追加] ドロップダウン リストから [タイマー コントロールの追加] を選択します。
表示されるダイアログボックスの手順 1 で、コントロールを表す変数の名前(timer など)を入力します。有効な Java 識別子を名前として入力する必要があります。
ダイアログの手順 2 のタイムアウト ボックスに、最初のポーリングが発生するまでの時間を入力します(「0 秒」など)。
ダイアログの手順 2 の繰り返し間隔ボックスに、ポーリングの間隔を入力します(「5 秒」など)。
ポーリングを開始する場合は、タイマの start メソッドを呼び出します。タイマを開始するコードは次のようになります。
service.startOperation(); timer.start();
タイマが作動するたびに、タイマは 「onTimeout」コールバックのハンドラを呼び出します。このハンドラでは、Web サービスを呼び出して情報を取得できるかどうかを確認する必要があります。そのためのコードは次のようになります。
private void timer_onTimeout(long time) { if (service.isOperationDone()) { timer.stop(); // process operation result... } }
ポーリングを終了する場合は、必ずタイマの stop メソッドを呼び出してください。