RestEasy统一异常处理问题,处理之后前端一直处于等待状态未返回异常结果
问题描述:
在RestEasy使用自定义统一异常处理之后,但是前端一直未能收到后台返回结果,但是后台已经执行完毕,跟踪了源码发现没有什么异常情况。
使用jstack分析了堆栈也没有发现死锁或者阻塞,而且排查代码也没有发现有死循环之类的问题,但是一直没有返回,当把自定义异常处理屏蔽掉之后使用框架自带的异常,发现能够返回异常信息
,这就非常奇怪。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public class PaymentExceptionHandler implements ExceptionMapper<Throwable> { private static final Logger logger = LoggerFactory.getLogger( PaymentExceptionHandler.class ); @Override public Response toResponse( Throwable exception ) { logger.error( exception.getMessage(), exception ); //转换异常 PaymentResponse<Void> response = ResponseHelper.errorResponse( exception ); String text = JsonUtils.toJson( response ); return Response.status(Status.BAD_REQUEST) .entity(text).encoding("UTF-8").build(); } }
|
也没有发现什么问题,但是当我把encoding(“UTF-8”)去掉之后就能正常返回,目前还需要确认原因。
参考文档:https://yq.aliyun.com/articles/65133