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 操作では、を使用して最大待機時間を定義できます。
wait
とnowait
クエリーパラメーター。の場合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 応答が返されますが、ジョブは作成されません。