Hello guys, I am trying to log the exception thrown by
WebApplicationExceptionMapper but the exception mapper is never called.

Instead of calling it tomee calls ExceptionUtils.convertFaultToResponse.
Even writing a new default exception mapper doesn't work. Anyone knows how
can I print the exception of WebApplicationException? It can be using the
mapper or not.

public static <T extends Throwable> Response convertFaultToResponse(T
ex, Message currentMessage) {
    if (ex == null || currentMessage == null) {
        return null;
    }e
    Message inMessage = currentMessage.getExchange().getInMessage();
    Response response = null;
    if (ex instanceof WebApplicationException) {
        WebApplicationException webEx = (WebApplicationException)ex;
        if (webEx.getResponse().hasEntity()
            && webEx.getCause() == null
            && MessageUtils.getContextualBoolean(inMessage,
SUPPORT_WAE_SPEC_OPTIMIZATION, true)) {
            response = webEx.getResponse();
        }
    }

    if (response == null) {
        ExceptionMapper<T>  mapper =
            
ServerProviderFactory.getInstance(inMessage).createExceptionMapper(ex.getClass(),
inMessage);
        if (mapper != null) {
            try {
                response = mapper.toResponse(ex);
            } catch (Throwable mapperEx) {

inMessage.getExchange().put(JAXRSUtils.EXCEPTION_FROM_MAPPER, "true");
                mapperEx.printStackTrace();
                return Response.serverError().build();
            }
        }
    }
    if (response == null) {
        Throwable unwrappedException = ex.getCause();
        if (unwrappedException instanceof WebApplicationException) {
            WebApplicationException webEx =
(WebApplicationException)unwrappedException;
            response = webEx.getResponse();
        }
    }
    JAXRSUtils.setMessageContentType(currentMessage, response);
    return response;
}

Reply via email to