1

Restletバージョン2.0.15を使用しています

ReSTクライアントによってダウンロードされる可能性のある大きなzipファイルをその場で生成するサービスを実装しています。このファイルを生成する際にエラーが発生する可能性があります。エラーが発生した場合は、クライアントに意味のあるエラー応答を提供したいと思います。

私のセットアップには以下が含まれます:

In the main, an instance of Application is constructed, and the Component.setStatusS​ervice(StatusService​) and
Application.setStatu​sSevice(StatusServic​e) 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ステータスのみを受け取ります。

クライアントにステータスを制御する(そして理想的には有益なメッセージを与える)方法はありますか?

情報をありがとう、

  • ジム
4

1 に答える 1

0

これは実際には Restlet のバグです。この問題は次の場所に記録されています。

https://github.com/restlet/restlet-framework-java/issues/670

于 2012-10-04T14:21:42.700 に答える