Hi everyone,

here is an update on the problem, maybe it will help someone that is facing the 
same problem:
The issue is fixed already with the following Jira: 
https://issues.apache.org/jira/browse/CAMEL-12364

Best regards,
Manuel

From: Shenavai, Manuel <manuel.shena...@sap.com>
Sent: Sonntag, 25. Oktober 2020 11:31
To: users@camel.apache.org
Subject: [CAUTION] RE: Camel CXF with SOAP 1.1 and SOAP 1.2

Hi everyone,


I further looked into the problem and found that the issue mentioned 
(error.txt) is probably caused by the SAAJOutInterceptor. I found in 
SAAJOutInterceptor:L123 there will be a MessageFactory created based on the 
currently handled Message (which is soap12). This will create a 
SAAJStreamWriter based on a SOAP12 message (L132). This will later cause the 
problem.

In the interceptor chain, the soapVersion is set only after the 
SAAJOutInterceptor:
  setup [PolicyOutInterceptor]
  pre-logical [SoapHeaderOutFilterInterceptor]
  post-logical [SoapPreProtocolOutInterceptor]
  prepare-send [MessageSenderInterceptor]
  pre-stream [LoggingOutInterceptor, AttachmentOutInterceptor, 
StaxOutInterceptor]
  pre-protocol [SAAJOutInterceptor]
  write [SetSoapVersionInterceptor, SoapOutInterceptor]
  marshal [BareOutInterceptor]
  write-ending [SoapOutEndingInterceptor]
  pre-protocol-ending [SAAJOutEndingInterceptor]
  pre-stream-ending [StaxOutEndingInterceptor]
  prepare-send-ending [MessageSenderEndingInterceptor]

I found two ways to work around this problem:

  *   Change the phase of SetSoapVersionInterceptor (i.e. to PHASE.SETUP)
  *   Change the SAAJOutInterceptor (to create the MessageFactory in 
SAAJOutInteceptor based on the in-message)

I also attached a example for your reference (start Server.java and use the 
Client.java to do a request).

What do you think, would it be possible/ make sense to have the 
SetSoapVersionInterceptor in an earlier phase?

Best regards,
Manuel

From: Shenavai, Manuel <manuel.shena...@sap.com<mailto:manuel.shena...@sap.com>>
Sent: Donnerstag, 22. Oktober 2020 10:09
To: users@camel.apache.org<mailto:users@camel.apache.org>
Subject: [CAUTION] Camel CXF with SOAP 1.1 and SOAP 1.2

Hi everyone,

I have a question regarding the camel CXF component. I setup a cxfEndpoint 
using a SOAP 1.2 WSDL, endpoint & port. This allows to call the endpoint with 
SOAP 1.2. But when I call the endpoint with SOAP 1.1 messages, I got different 
results. In CamelBlueprintTestSupport this works (with SOAP 1.1 request I get 
SOAP 1.1 response), but in my real application it fails. With SOAP 1.1 the 
route is entered, but an error occurs when the response is trying to be send 
(logs attached, HIERARCHY_REQUEST_ERR: An attempt was made to insert a node 
where it is not permitted)

What is the expected behavior in this use-case? Should a SOAP1.2 Endpoint be 
able to handle SOAP1.1 message?

Thanks in advance &
Best regards,
Manuel


Reply via email to