Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
3.0.3, 3.0.4
-
None
-
Unknown
Description
CXF soap faults for unmarshalling errors do not contain information useful in locating the error. For example, invalid content in an element results in this faultString: Unmarshalling Error: xxxx . (Where xxxx is the invalid data)
The full stack trace contains messages with location of the bad string, i.e. :
[com.sun.istack.SAXParseException2; lineNumber: 5; columnNumber: 38; xxxx]. This fragment in JAXBEncodeDecoder, extracts the message from the linked exception, i.e., the last exception in the stack:
} catch (PrivilegedActionException e) {
Exception ex = e.getException();
if (ex instanceof Fault)
if (ex instanceof javax.xml.bind.UnmarshalException) {
javax.xml.bind.UnmarshalException unmarshalEx = (javax.xml.bind.UnmarshalException)ex;
if (unmarshalEx.getLinkedException() != null) {
throw new Fault(new Message("UNMARSHAL_ERROR", LOG,
unmarshalEx.getLinkedException().getMessage()), ex);
For more info, see this mailing list thread: http://cxf.547215.n5.nabble.com/Unmarshalling-error-content-usability-tt5755169.html
Attachments
Issue Links
- is duplicated by
-
CXF-6311 Unusable error message for Unmarshall Error
- Closed