Details
Description
WebApplicationException occurring as a result of a JAXB mapping (an internal NullPointerException caused it), never got printed on the console or in the logs. The following message did get printed:
WARNING WebApplicationException has been caught, cause: java.lang.NullPointerException
But beyond this, no other information was available. Debugging revealed that the problem was in JAXB mapping in one of my classes, but it would have been very helpful if the exception trace is printed in the logs or on the console.
The problem remained even after setting the log levels in logging.properties to FINEST. Other FINEST logs did get printed fine, except for the stack trace of the exception. My research showed that the setPrintStackTrace(boolean) method of WebApplicationExceptionMapper never gets called from anywhere. This will mean that the printStackTrace variable of the class always remains false, resulting in eternal shadowing of the stack trace.
I made a small change to my local copy of org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper Java file and patched it to cxf-2.4.3.jar to get the stack trace in my logs when log level was set to INFO or lower. The three line change is as below:
public Response toResponse(WebApplicationException ex) {
+ if(LOG.isLoggable(Level.INFO))
...
(lines with + are added lines)
It would be great if you can make this change in subsequent versions.