The issue was the DefaultExceptionMapper that I created that extends WebApplicationExceptionMapper was never called. Also WebApplicationExceptionMapper was never called if I didn't create the default one.
In summary WebApplicationExceptionMapper is never called, because of the property I mentioned earlier. Changing it to false, it works. On Thu, Dec 26, 2019 at 1:33 PM Andriy Redko <drr...@gmail.com> wrote: > Hi Ivan, > > Please correct me if I misunderstood the case > > > Hello guys, I am trying to log the exception thrown by > > WebApplicationExceptionMapper but the exception mapper is never called. > > You have an exception mapper (WebApplicationExceptionMapper) which throws > (possibly, another) exception while trying to map the exception? And you > would like to intercept and log the exceptions thrown from mapper? Or your > JAX-RS resources thrown exceptions and WebApplicationExceptionMapper is > never > called? > > Thank you. > > Best Regards, > Andriy Redko > > > > > IJF> Thanks Romain, it seems using a ContainerRequestFilter did the job. > > IJF> I will open a ticket. > > IJF> On Wed, Dec 25, 2019 at 2:45 PM Romain Manni-Bucau < > rmannibu...@gmail.com> > IJF> wrote: > > >> Hi Ivan > > >> You can set it with a cxf interceptor or even jaxrs filter but looks > like a > >> bug, at least the default. Default should be true only if there is no > >> custom mapper, not if there is any registered mapper matching and this > is > >> known at deploy time. Guess you should open a ticket. > > >> Le mer. 25 déc. 2019 à 15:32, Ivan Junckes Filho <ivanjunc...@gmail.com> > a > >> écrit : > > >> > 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; > >> > > } > >> > > > >> > > > >> > > > >