Этот вопрос касается проекта 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.