如何解决Quarkus Microprofile Rest Client ResponseExceptionMapper不会捕获错误
我在Quarkus(1.8.1)服务中有一个Rest Client,其定义如下:
@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
的调用。看来我的映射器尚未注册。
如何注册我的处理程序以获取对服务调用的无效响应?
解决方法
您需要使用@RegisterProvider(MyExceptionMapper.class)
将MyExceptionMapper注册为其他客户端的提供程序。
@RegisterRestClient
@RegisterProvider(MyExceptionMapper.class)
@Path("/")
@Produces("application/json")
@Consumes("application/json")
public interface MyClient {
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。