Hi,
Is there any way to avoid expected message part checking (CxfEndpoint.java) in
2.7.3?
skipPayloadMessagePartCheck option was introduced in 2.8.0:
https://issues.apache.org/jira/browse/CAMEL-3778
Anyway, just it means that there is no way to implement universal CXF producer
in Camel before 2.8.0 (analog to CXF Dispatch interface)?
The use case is following: I need generic Camel CXF producer, that can speak
with any external web service.
I defined a generic interface:
@WebServiceProvider()
@ServiceMode(value = Service.Mode.PAYLOAD)
public interface WebServiceFacade extends Provider<Source> {
public StreamSource invoke(Source message);
}
and specify route:
<camelContext xmlns="http://camel.apache.org/schema/spring">
<camel:route>
<camel:from
uri="cxf://http://localhost:8197/FlightReservationService/?dataFormat=PAYLOAD&serviceClass=de.camel.test.WebServiceFacadeClass"/>
<camel:to uri="log:TestLogger"/>
<camel:to
uri="cxf://http://localhost:8080/sbb/services/Invoke?dataFormat=PAYLOAD&serviceClass=de.camel.test.WebServiceFacade
"/>
</camel:route>
</camelContext>
Camel successfully receives incoming message and logs it. After it, before
sending, Camel tries to compare message parts from the incoming message with
MessagePartInfo from the WebServiceFacade interface. Of course they have
different names : {http://test.camel.de/}invoke from interface and {xxxx}yyy
from message.
Therefore Camel throws exception: The PayLoad elements cannot fit with the
message parts of the BindingOperation. Please check the BindingOperation and
PayLoadMessage.
Questions:
1) what is the reason of this validation? Basically root payload element can be
not the same as web service method name (it is required only for wrapped style,
but in case of using ws-addressing they can be different).
2) is there any other possibility to provide universal CXF producer in Camel
before skipPayloadMessagePartCheck was introduced (analog to CXF Dispatch
interface)?
Regards,
Andrei.