12.13.3. RESTEasy 向けに非同期ジョブを設定

概要

このトピックでは、RESTEasy を使った非同期ジョブのクエリパラメーター例について見ていきます。

警告

ポータブルに実装ができないため、ロールベースのセキュリティは非同期ジョブサービスでは機能しません。非同期ジョブサービスを利用する場合、アプリケーションセキュリティは web.xml ファイルで XML 宣言しなければなりません。

重要

GET、DELETE、PUT メソッドを非同期的に呼び出すことができますが、これらのメソッドの HTTP 1.1 コントラクトに違反することになります。これらの呼び出しは複数回呼び出された場合にリソースの状態を変更しないこともありますが、呼び出しごとに新しいジョブエントリとしてサーバーの状態を変更します。

例12.18 非同期パラメーター

asynch クエリパラメーターを使いバックグラウンドで呼び出しを実行します。バックグラウンドメソッドのレスポンスの場所を参照する URL が含まれるロケーションヘッダーとあわせ、202 Accepted レスポンスが返されます。
POST http://example.com/myservice?asynch=true
上記の例では、202 Accepted レスポンスと、ロケーションヘッダー (バックグラウンドメソッドのレスポンスの場所を参照する URL が含まれる) を返します。ロケーションヘッダーのサンプルを以下に示しています。
HTTP/1.1 202 Accepted
Location: http://example.com/asynch/jobs/3332334
URI は以下の形式を取ります。
/asynch/jobs/{job-id}?wait={millisconds}|nowait=true
GET、POST、DELETE 操作をこの URL で実行可能です。
  • ジョブが完了した場合、GET はレスポンスとして呼び出された JAX-RS リソースメソッドを返します。ジョブが完了していない場合、この GET が 202 Accepted レスポンスコードを返します。GET を呼び出してもジョブは削除されないので、複数回呼び出すことができます。
  • POST はジョブのレスポンスを読み取り、完了した場合はジョブを削除します。
  • DLETE はジョブのキューを手動消去するために呼び出されます。

    注記

    ジョブのキューがいっぱいの場合は、DELETE を呼び出さずに、自動的にメモリから最初のジョブをエビクトします。

例12.19 Wait / Nowait

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

例12.20 Oneway パラメーター

RESTEasy は oneway クエリパラメーターを使うことで、fire/forget ジョブに対応しています。
POST http://example.com/myservice?oneway=true
上記の例は、202 Accepted のレスポンスを返しますが、ジョブは作成されません。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。