处理JAX-RS中的自定义异常类型
生活随笔
收集整理的這篇文章主要介紹了
处理JAX-RS中的自定义异常类型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JAX-RS支持處理自定義異常(以EJB或CID Bean形式拋出)以處理自定義HTTP響應。
假設我們有一個“異常” EJB:
@Stateless public class Hello {public String greeting() {if (new Random().nextBoolean())throw new GreetingException("Could not greet");return "hello";}}@ApplicationException public 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-RS ExceptionMapper 。
@Provider public 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 greet HTTP 409 Conflict 。
如果使用CDI托管bean而不是EJB,則不需要@ApplicationException批注。
翻譯自: https://www.javacodegeeks.com/2017/12/handle-custom-exception-types-jax-rs.html
總結
以上是生活随笔為你收集整理的处理JAX-RS中的自定义异常类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑控串口控制投影机软件(电脑控串口控制
- 下一篇: i53550核显相当于什么显卡(i534