肿瘤康复网,内容丰富有趣,生活中的好帮手!
肿瘤康复网 > 处理JAX-RS中的自定义异常类型

处理JAX-RS中的自定义异常类型

时间:2021-10-25 19:41:46

相关推荐

JAX-RS支持处理自定义异常(以EJB或CID Bean形式抛出)以处理自定义HTTP响应。

假设我们有一个“异常” EJB:

@Statelesspublic class Hello {public String greeting() {if (new Random().nextBoolean())throw new GreetingException("Could not greet");return "hello";}}

@ApplicationExceptionpublic class GreetingException extends RuntimeException {public GreetingException(String message) {super(message);}}

EJB在我们的JAX-RS资源中使用:

@Path("hello")public class HelloResource {@InjectHello hello;@GETpublic String hello() {return hello.greeting();}}

现在,将发生的异常映射到自定义HTTP响应,我们可以定义JAX-RSExceptionMapper

@Providerpublic class GreetingExceptionMapper implements ExceptionMapper<GreetingException> {@Overridepublic Response toResponse(GreetingException exception) {return Response.status(Response.Status.CONFLICT).header("Conflict-Reason", exception.getMessage()).build();}}

异常映射器注册为JAX-RS扩展名(@Provider),它将处理资源方法引发的任何GreetingException

该示例偶尔会输出带有标头Conflict-Reason: Could not greetHTTP409 Conflict

如果使用CDI托管bean而不是EJB,则不需要@ApplicationException批注。

翻译自: //12/handle-custom-exception-types-jax-rs.html

如果觉得《处理JAX-RS中的自定义异常类型》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。