JAX-RS ExceptionMapper异常分裂

问题描述 投票:1回答:1

我有一个基于JAX-RS的Web应用程序。该应用程序包括两种类型的API:

  1. 典型的休息(json)端点
  2. 端点,它复制休息,但接收XML格式的请求。

两种API都会产生不同的格式响应

  1. JSON
  2. XML

我目前有单个ExceptionMapper,用于捕获异常,如:EJBAccessException,NotAllowedException ...

这两种API类型都可以生成。

我的问题:哪个是分离异常处理的最佳方法? (对于rest api的相同异常的反应应该生成JSON响应,对于XML - xml响应)

java java-ee exception-handling jax-rs
1个回答
0
投票
@Context private ResourceInfo resourceInfo;

@Override
public Response toResponse(Throwable throwable) {
    if(resourceInfo.getResourceClass().isAnnotationPresent(RestExceptionMapper.class)) {
        return RestExceptionHandler.handle(throwable, servletRequest);
    } else if (resourceInfo.getResourceClass().isAnnotationPresent(SoapExceptionMapper.class)) {
        SoapExceptionHandler.handle(throwable, servletRequest);
    }
    return Response.status(500).entity("ERROR").build();
}

这是我的新异常映射器的模板。使用注释链接到资源。

© www.soinside.com 2019 - 2024. All rights reserved.