gpt4 book ai didi

java - MyRepresentation 抛出异常后未调用 MyStatusService

转载 作者:行者123 更新时间:2023-12-01 05:06:29 25 4
gpt4 key购买 nike

我使用的是 ReSTLet 版本 2.0.15

我正在实现一项服务,该服务可以动态生成一个可能很大的 zip 文件由 ReST 客户端下载。在生成该文件时,可能会出现错误,当我想给客户端一个有意义的错误响应吗?

我的设置包括:

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(扩展 OutputRepresentation​).write(OutputStream​)

发现(如预期的)请求存在问题(出于测试原因故意造成问题),并希望给客户一个有意义的回应。所以它抛出一个异常(应该是ResourceException,还是任何异常?),该异常被捕获在

ServerAdapter.commit​(HttpResponse) 

但在此之后,不会调用 MyStatusService 中的任何方法,因此客户端不会获取有意义的消息,只有 500 状态。

有没有办法控制状态(最好是向客户端提供信息性消息)?

感谢您提供任何信息,

  • 吉姆

最佳答案

这实际上是 ReSTLet 中的一个错误。该问题记录在:

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

关于java - MyRepresentation 抛出异常后未调用 MyStatusService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12587499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com