有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Quarkus微文件Rest客户端响应ExceptionMapper未捕获错误

我在Quarkus(1.8.1)服务中有一个Rest客户端,定义如下:

@RegisterRestClient
@Path("/")
@Produces("application/json")
@Consumes("application/json")
public interface MyClient {
    @POST
    @Path("/{entity}")
    Response postEntity(@HeaderParam(value = "Authorization") String auth, 
            @PathParam("entity") String entity, Object payload) throws MyException;
}

我在同一个包中实现了ResponseExceptionMapper,如下所示:

public class MyExceptionMapper implements ResponseExceptionMapper<MyException> {
    @Override
    public MyException toThrowable(Response r) {
        return new DynamicsException(r.getStatus() + " - " + r.readEntity(String.class));
    }
}

当我调用该服务时,它当前返回404错误,我希望调用MyExceptionMapper类中的代码。但是它没有,而是抛出一个javax.ws.rs.WebApplicationException。堆栈跟踪包括对DefaultResponseExceptionMapper的调用。看来我的制图员还没有注册

如何注册服务调用的无效响应的处理程序


共 (1) 个答案

  1. # 1 楼答案

    您需要将MyExceptionMapper注册为rest客户端的@RegisterProvider(MyExceptionMapper.class)提供程序

    @RegisterRestClient
    @RegisterProvider(MyExceptionMapper.class)
    @Path("/")
    @Produces("application/json")
    @Consumes("application/json")
    public interface MyClient {