Restletバージョン2.0.15を使用しています
ReSTクライアントによってダウンロードされる可能性のある大きなzipファイルをその場で生成するサービスを実装しています。このファイルを生成する際にエラーが発生する可能性があります。エラーが発生した場合は、クライアントに意味のあるエラー応答を提供したいと思います。
私のセットアップには以下が含まれます:
In the main, an instance of Application is constructed, and the Component.setStatusService(StatusService) and
Application.setStatusSevice(StatusService) are invoked with MyStatusService (Extends StatusService)
and, and MyStatusService overrides:
public Representation getRepresentation(Status status, Request request, Response response) {
public Status getStatus(Throwable throwable, Request request, Response response) {
public Status getStatus(Throwable throwable, UniformResource resource) {
..。
When I handle the GET request from the client, I set the entity in the response
(Response.setEntity(Representation) with MyRepresentation which extends OutputRepresentation.
The MyRepresentation class overrides the method:
public void write(WritableByteChannel writableChannel)
which calls the overridden method:
public void write(OutputStream outputStream)
which does the work of generating the zip file.
実行すると、次のようになります。
ServerCall.sendRespo nse(Response)呼び出し->
ServerCall.writeResp onseBody(Representation、WritableChannel、OutputStream)->呼び出し
MyRepresentation(extends OutputRepresentation).write(OutputStream)
これは、(テスト上の理由で意図的に悪い)要求で(予想どおりに)問題を見つけ、クライアントに意味のある応答を提供したいと考えています。したがって、例外をスローし(ResourceExceptionか、それとも例外か)、キャッチされます。
ServerAdapter.commit(HttpResponse)
ただし、この時点以降、MyStatusServiceのどのメソッドも呼び出されないため、クライアントは意味のあるメッセージを受け取らず、500ステータスのみを受け取ります。
クライアントにステータスを制御する(そして理想的には有益なメッセージを与える)方法はありますか?
情報をありがとう、
- ジム