It seems the issue is with: wae.spec.optimization property, it needs to be false or it webapplicationexception will be skipped.
But I can't find the way to set it to false. Property is part of org.apache.cxf.message.Message. Anyone can help? system.properties didn't work. On Wed, Dec 25, 2019 at 10:23 AM Ivan Junckes Filho <ivanjunc...@gmail.com> wrote: > 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; > } > >