2.16.2. 配置异步作业
本节涵盖使用 RESTEasy 的异步作业的查询参数示例。
基于角色的安全性无法在异步作业服务中使用,因为它无法移植实施。如果使用异步作业服务,则应用程序安全性必须通过 web.xml
文件中的 XML 声明来实现。
虽然 GET、DELETE 和 PUT 方法可以异步调用,但这破坏了这些方法的 HTTP 1.1 合同。虽然这些调用如果多次调用,可能无法更改资源的状态,但它们会在每次调用时将服务器的状态更改为新作业条目。
asynch
查询参数用于在后台运行调用。将返回 202 接受
的响应,以及位置标头,其 URL 指向后台方法的响应位置。
POST http://example.com/myservice?asynch=true
POST http://example.com/myservice?asynch=true
上面的示例返回了 202 接受
的响应。它还返回一个位置标头,其 URL 指向后台方法的响应位置。位置标头的示例如下所示:
HTTP/1.1 202 Accepted Location: http://example.com/asynch/jobs/3332334
HTTP/1.1 202 Accepted
Location: http://example.com/asynch/jobs/3332334
URI 采用以下形式:
/asynch/jobs/{job-id}?wait={milliseconds}|nowait=true
/asynch/jobs/{job-id}?wait={milliseconds}|nowait=true
GET、POST 和 DELETE 操作可以在此 URL 上执行。
-
如果作业已完成,GET 会返回作为响应调用的 JAX-RS 资源方法。如果作业还没有完成,GET 将返回
202 Accepted
响应代码。调用 GET 不会删除作业,因此可以多次调用。 - POST 对作业响应进行读取,并在作业完成后删除作业。
- 调用 DELETE 来手动清理作业队列。
当作业队列已满时,它会自动从内存中驱除最早的作业,而无需调用 DELETE。
GET 和 POST 操作允许使用 wait
和 nowait
查询参数来定义最长等待时间。如果未指定 wait
参数,则操作将默认为 nowait=true
,如果作业未完成,则根本不等待。wait
参数以毫秒为单位定义。
POST http://example.com/asynch/jobs/122?wait=3000
POST http://example.com/asynch/jobs/122?wait=3000
RESTEasy 支持使用 单
向查询参数来触发和忘记作业。
POST http://example.com/myservice?oneway=true
POST http://example.com/myservice?oneway=true
上面的示例返回 202 Accepted
响应,但没有创建作业。
异步作业服务的配置参数可在附录的 RESTEasy Asynchronous Job Service Configuration Parameters 部分中找到。