Hi all,

When I tried to call DSS boxcaring and faced a issue when processing reply
message flow.

for begin boxcar, DSS returns 202 message with content type header.

HTTP/1.1 202 Accepted
Set-Cookie: JSESSIONID=E6D09FBA4BEF0AE451844DE3726E28A5; Path=/; HttpOnly
*Content-Type: text/xml;charset=UTF-8*
Transfer-Encoding: chunked
Date: Wed, 16 Oct 2013 15:10:49 GMT
Server: WSO2 Carbon Server

so ESB tries to parse message

[2013-10-16 20:56:47,593] DEBUG - wire << "POST /services/test
HTTP/1.1[\r][\n]"
[2013-10-16 20:56:47,593] DEBUG - wire << "Content-Type: text/xml[\r][\n]"
[2013-10-16 20:56:47,594] DEBUG - wire << "Accept: */*[\r][\n]"
[2013-10-16 20:56:47,594] DEBUG - wire << "SOAPAction:
"urn:begin_boxcar"[\r][\n]"
[2013-10-16 20:56:47,594] DEBUG - wire << "Transfer-Encoding:
chunked[\r][\n]"
[2013-10-16 20:56:47,594] DEBUG - wire << "Host: localhost:9764[\r][\n]"
[2013-10-16 20:56:47,594] DEBUG - wire << "Connection: Keep-Alive[\r][\n]"
[2013-10-16 20:56:47,594] DEBUG - wire << "User-Agent:
Synapse-PT-HttpComponents-NIO[\r][\n]"
[2013-10-16 20:56:47,595] DEBUG - wire << "[\r][\n]"
[2013-10-16 20:56:47,595] DEBUG - wire << "f2[\r][\n]"
[2013-10-16 20:56:47,595] DEBUG - wire << "<?xml version="1.0"
encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Body><dat:begin_boxcar
xmlns:dat="http://ws.wso2.org/dataservice
"></dat:begin_boxcar></soapenv:Body></soapenv:Envelope>[\r][\n]"
[2013-10-16 20:56:47,595] DEBUG - wire << "0[\r][\n]"
[2013-10-16 20:56:47,595] DEBUG - wire << "[\r][\n]"
*[2013-10-16 20:56:47,596] DEBUG - wire >> "HTTP/1.1 202 Accepted[\r][\n]"*
*[2013-10-16 20:56:47,597] DEBUG - wire >> "Set-Cookie:
JSESSIONID=704569E4FED657638EC97FBF2C48BE11; Path=/; HttpOnly[\r][\n]"*
*[2013-10-16 20:56:47,597] DEBUG - wire >> "Content-Type:
text/xml;charset=UTF-8[\r][\n]"*
[2013-10-16 20:56:47,597] DEBUG - wire >> "Transfer-Encoding:
chunked[\r][\n]"
[2013-10-16 20:56:47,597] DEBUG - wire >> "Date: Wed, 16 Oct 2013 15:26:47
GMT[\r][\n]"
[2013-10-16 20:56:47,597] DEBUG - wire >> "Server: WSO2 Carbon
Server[\r][\n]"
[2013-10-16 20:56:47,597] DEBUG - wire >> "[\r][\n]"
[2013-10-16 20:56:47,598] DEBUG - wire >> "0[\r][\n]"
[2013-10-16 20:56:47,599] DEBUG - wire >> "[\r][\n]"
[2013-10-16 20:56:47,600] ERROR - RelayUtils Error while building
Passthrough stream
org.apache.axiom.om.OMException: javax.xml.stream.XMLStreamException:
ParseError at [row,col]:[1,1]
Message: Premature end of file.
at
org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:296)
at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.getSOAPEnvelope(StAXSOAPModelBuilder.java:204)
 at
org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.<init>(StAXSOAPModelBuilder.java:154)
at
org.apache.axiom.om.impl.AbstractOMMetaFactory.createStAXSOAPModelBuilder(AbstractOMMetaFactory.java:73)
 at
org.apache.axiom.om.impl.AbstractOMMetaFactory.createSOAPModelBuilder(AbstractOMMetaFactory.java:79)
at
org.apache.axiom.om.OMXMLBuilderFactory.createSOAPModelBuilder(OMXMLBuilderFactory.java:196)
 at
org.apache.axis2.builder.SOAPBuilder.processDocument(SOAPBuilder.java:55)
at
org.apache.synapse.transport.passthru.util.DeferredMessageBuilder.getDocument(DeferredMessageBuilder.java:118)
 at
org.apache.synapse.transport.passthru.util.RelayUtils.builldMessage(RelayUtils.java:107)
at
org.apache.synapse.transport.passthru.util.RelayUtils.buildMessage(RelayUtils.java:82)
 at
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:68)
at
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:239)
 at
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.mediateFromContinuationStateStack(Axis2SynapseEnvironment.java:556)
at
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:198)
 at
org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:464)
at
org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:168)
 at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at
org.apache.synapse.transport.passthru.ClientWorker.run(ClientWorker.java:225)
 at
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.xml.stream.XMLStreamException: ParseError at
[row,col]:[1,1]
Message: Premature end of file.
at
com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:594)
 at
org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225)
at
org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34)
 at
org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225)
at
org.apache.axiom.util.stax.dialect.SJSXPStreamReaderWrapper.next(SJSXPStreamReaderWrapper.java:138)
 at
org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681)
at
org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
 ... 21 more

and fails.

I was able to overcome this by skipping building of 202 Accepted messages.
See attached diff.

BTW is it fine to assume HTTP 202 response will not have a body. Spec does
not tell that it's illegal but never seen a place which return http 202
with a body.

Meanwhile if possible we need to fix DSS side to not send back content type
header.

-- 
Miyuru Wanninayaka
Technical Lead
WSO2 Inc. : http://wso2.com

Mobile : +94 77 209 9788
Blog : http://miyurudw.blogspot.com
Flickr : http://www.flickr.com/photos/miyuru_daminda

Attachment: HTTP202-skip-build.diff
Description: Binary data

_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to