Hello All,
I am using Camel 2.14.4 and deploy to Apache Karaf 3.0.5 with Java 8.  I
have a web service that I am exposing over HTTP and it worked fine in Camel
2.10.7.  When I hit the service now, it returns a WoodStox error when trying
to convertBodyTo a String or Document:

Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF; was expecting
a close tag for element <er-ext:AttributeXPath>
 at [row,col {unknown-source}]: [53,88]
        at 
com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:685)
        at
com.ctc.wstx.sr.BasicStreamReader.throwUnexpectedEOF(BasicStreamReader.java:5519)
        at
com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2722)
        at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1073)

I have turned on CXFLogging on the endpoint and I see the entire message.  I
opened in an XML editor and it is schema valid and well formed.

I tried different streamcache options on the route and context but those
didn't make a difference.

I have debugged into the DefaultCxfBinding.  I find some interesting results
here.  When it calls the method to get the payload body elements, the soap
body is empty:

else if (dataFormat == DataFormat.PAYLOAD) {
                List<SoapHeader> headers =
CastUtils.cast((List<?>)message.get(Header.HEADER_LIST));
                Map<String, String> nsMap = new HashMap<String, String>();
                *answer = new CxfPayload<SoapHeader>(headers,
getPayloadBodyElements(message, nsMap), nsMap);*
                
            }

I confirm that in getPayloadBodyElements:

    protected static List<Source> getPayloadBodyElements(Message message,
Map<String, String> nsMap) {
        // take the namespace attribute from soap envelop
        Document soapEnv = (Document) message.getContent(Node.class);

The soapEnv document is only the soap envelope, complete header, and empty
body:

<?xml version="1.0" encoding="UTF-8"?><soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
    <soap:Header>
        <Action
xmlns="http://www.w3.org/2005/08/addressing";>Submit-Entity-Merge</Action>
        <MessageID
xmlns="http://www.w3.org/2005/08/addressing";>580417e4-8590-4c2a-8715-b5ac100d9e74</MessageID>
        <To
xmlns="http://www.w3.org/2005/08/addressing";>http://localhost:18002/NIJ/EntityResolutionService</To>
        <ReplyTo xmlns="http://www.w3.org/2005/08/addressing";>
           
<Address>http://localhost:18003/OJB/MergeNotificationService/PersonSearchRequestServiceIntermediary</Address>
        </ReplyTo>
    </soap:Header>
    <soap:Body/>
</soap:Envelope>

Does anyone have any idea why the Soap Body is empty here?  And why I am
getting a woodstox parsing error?  The simplest solution is that the payload
is wrong when calling the service.  However, the CXF logging interceptors
confirm that the Soap message is complete and that the body is schema valid.

Any ideas?

Thanks!
Yogesh 




--
View this message in context: 
http://camel.465427.n5.nabble.com/Soap-Body-is-Empty-or-Partial-XML-tp5774364.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to