Как создать исключение Cutomized Internal Server Exception вместо Default java.servlet.ServletException? - PullRequest
0 голосов
/ 19 мая 2019

Этот вопрос касается проекта Apache OODT. Существует класс сервлетов JAX-RS, который создается с расширением CXFNonSpringJaxrsServlet.

Когда соединение с внутренним сервером теряется, оно выбрасывает java.servlet.ServletException по умолчанию. Я изменил его, как показано ниже, с целью генерирования Custom InternalServerException вместо исключения сервлета по умолчанию.

@Override
  public void init(ServletConfig configuration) throws WebApplicationException
  {
    try{
      super.init(configuration);
      ServletContext context = configuration.getServletContext();
      initializeClient(context);
      initializeWorkingDir(context);
      initializeConfigurations(context);
    }catch (ServletException e){
      throw new InternalServerErrorException(e.getMessage());
    }
  }

Я ожидал выбросить пользовательское исключение. Но он генерирует ниже исключения при запуске этого на Tomcat9. Он содержит как сервлет, так и пользовательские части исключений. Основная причина содержит пользовательское сообщение об исключении.

Message : Servlet.init() for servlet [CasProductJaxrsServlet] threw exception

Description: The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception :

javax.servlet.ServletException: Servlet.init() for servlet [CasProductJaxrsServlet] threw exception
...

Root Cause :

org.apache.oodt.cas.product.jaxrs.exceptions.InternalServerErrorException: Client could not establish a connection to the file manager.
...

Я хотел выдать только пользовательское исключение как полезную нагрузку JSON, а не как Stack Trace.

...