[ https://issues.apache.org/jira/browse/CXF-9091?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17911595#comment-17911595 ]
Freeman Yue Fang commented on CXF-9091: --------------------------------------- Hi [~mash-sap], I'd say what "ONEWAY" means in wsdl2 spec is the server return immediately with HTTP 202 before the server actually process the incoming payload. And for the large payload with ONEWAY, we normally need to cache the stream before the server process the payload, otherwise we may see such errors you ran into. That's the reason why CXF introduced "ROBUST ONEWAY" in 2012, tracked by https://issues.apache.org/jira/browse/CXF-4091, also you can find more details from the cxf dev mailing list discussion here to get more details https://lists.apache.org/thread/fkj1kjxtyqr3fpngmkn683ghbqcobvwl about why "ROBUST ONEWAY" was introduced and what's the problem the "ROBUST ONEWAY" can resolve. I believe "ROBUST ONEWAY" here can perfectly fit your scenario. Best Regards Freeman > Camel 3|CXF: ParsingErrors with OneWay Messages > ----------------------------------------------- > > Key: CXF-9091 > URL: https://issues.apache.org/jira/browse/CXF-9091 > Project: CXF > Issue Type: Bug > Reporter: Manuel Shenavai > Priority: Major > > Hi everyone, > we recently moved from Camel 2 to Camel 3 and we are now observing the > following problem with CXF. If a OneWay message exceeds a certain length, the > messages fail with a parser error like: > Caused by: java.lang.IllegalStateException: Current event not START_ELEMENT > or END_ELEMENT > at > com.ctc.wstx.sr.BasicStreamReader.getNamespaceCount(BasicStreamReader.java:805) > ~[woodstox-core-6.2.7.jar:6.2.7] > at > org.apache.cxf.staxutils.DepthXMLStreamReader.getNamespaceCount(DepthXMLStreamReader.java:122) > ~[cxf-core-3.5.2.jar:3.5.2] > at > org.apache.cxf.staxutils.DepthXMLStreamReader.getNamespaceCount(DepthXMLStreamReader.java:122) > ~[cxf-core-3.5.2.jar:3.5.2] > at > org.apache.camel.component.cxf.converter.DelegatingXMLStreamReader.<init>(DelegatingXMLStreamReader.java:40) > ~[camel-cxf-3.17.0.jar:3.17.0] > at > org.apache.camel.component.cxf.converter.CxfPayloadConverter.convertTo(CxfPayloadConverter.java:225) > ~[camel-cxf-3.17.0.jar:3.17.0] > at > org.apache.camel.component.cxf.converter.CxfPayloadConverterLoader.lambda$registerFallbackConverters$8(CxfPayloadConverterLoader.java:68) > ~[camel-cxf-3.17.0.jar:3.17.0] > at > org.apache.camel.support.SimpleTypeConverter.convertTo(SimpleTypeConverter.java:101) > ~[camel-support-3.17.0.jar:3.17.0] > ... 30 common frames omitted > The error will not happen if we reduce the length of the message or if we > change it from OneWay to ResponseReply. This indicates a problem in the async > decoupling of the request. > During debugging I found that the HTTP thread is used to handle the request. > But the actual processing of the message happens in new thread. Maybe the > input stream is closed after the http thread is finished (HTTP 202) and the > spawned thread cannot read the full content anymore. > I created the following reproducer based on Spring Boot: > [https://github.com/mash-sap/cxfOneWayError/tree/main] > CXF: 3.6.5 > Camel CXF: 3.17.0 > Tomcat: 9.0.83 > Mailinglist Post: > https://lists.apache.org/thread/vproojr7pcygpjtrygfxj8qcgj1x2q4x -- This message was sent by Atlassian Jira (v8.20.10#820010)