Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

15.12.3. RESTEasy の非同期ジョブを設定する

概要

本トピックでは、RESTEasy を使用した非同期ジョブのクエリーパラメーターの例について説明します。

警告
ロールベースのセキュリティーは、ポータブルに実装できないため Asynchronous Job Service とは連携しません。Asynchronous Job Service を使用する場合は、代わりに web.xml ファイルでの XML 宣言を使用してアプリケーションセキュリティーを確立する必要があります。
重要
GET、DELETE、および PUT メソッドは非同期的に呼び出すことができますが、これらのメソッドの HTTP 1.1 コントラクトが破損します。これらの呼び出しによってリソースが複数回呼び出されると、その状態が変更されることはありませんが、各呼び出しで新しいジョブエントリーとしてサーバーの状態が変更されます。

例15.21 非同期パラメーター

asynch クエリーパラメーターは、バックグラウンドで呼び出しを実行するために使用されます。202 Accepted 応答が返されます。また、バックグラウンドメソッドの応答がある場所を指す URL が含まれる場所のヘッダーも返されます。
POST http://example.com/myservice?asynch=true
上記の例では、202Accepted 応答が返されます。また、バックグラウンドメソッドの応答がある場所を指す URL のある場所のヘッダーも返します。以下は場所ヘッダーの例です。
HTTP/1.1 202 Accepted
Location: http://example.com/asynch/jobs/3332334
URI は以下の形式になります。
/asynch/jobs/{job-id}?wait={millisconds}|nowait=true
この URL では、GET、POST、および DELETE 操作を実行できます。
  • ジョブが完了したら、GET は応答として呼び出される JAX-RS リソースメソッドを返します。ジョブが完了していない場合、この GET は 202Accepted 応答コードを返します。GET を呼び出してもジョブは削除されないため、複数回呼び出すことができます。
  • POST はジョブの応答を読み取り、完了するとジョブを削除します。
  • DELETE は、ジョブキューを手動でクリーンアップするために呼び出されます。
    注記
    ジョブキューが満杯になると、DELETE を呼び出すことなく、メモリーから最も古いジョブを自動的に無効にします。

例15.22 待つ/待つ

GET および POST 操作では、を使用して最大待機時間を定義できます。waitnowaitクエリーパラメーター。の場合waitパラメーターが指定されていない場合、操作はデフォルトでnowait=true、およびジョブが完了していない場合はまったく待機しません。Thewaitパラメーターはミリ秒単位で定義されます。
POST http://example.com/asynch/jobs/122?wait=3000

例15.23 一方向パラメーター

RESTEasy は、ファイアアンドフォーゲットジョブをサポートします。onewayクエリーパラメーター。
POST http://example.com/myservice?oneway=true
上記の例では、202 Accepted 応答が返されますが、ジョブは作成されません。