Now it works.
There were 2 problems: one mine and the other of SMX.

1. My problem: I applied to the class CxfBcProviderMessageObserver the same patch about WSDL with only one operation, to avoid specifying the operation if it's not necessary.
The patch that I replicated is:
https://issues.apache.org/activemq/browse/SM-1225?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
The problem was that I replicated the patch in the wrong way.

2. SMX problem: the problem was in the class CxfBcProviderMessageObserver. This class doesn't manage Soap 1.2 responses because it uses only the JbiInWsdl1Interceptor, but it's the ReadHeadersInterceptor that changes the SoapMessage version attribute according to the content of the soap response. In the current code the SoapMessage is created, and the default constructor set Soap 1.1 version. This causes that the getBodyElement method of the class JbiInWsdl1Interceptor, doesn't work because it tries to retrieve the wrong body from the message. I changed the CxfBcProviderMessageObserver adding some of the interceptors used in the CxfBcConsumer and changing the creation of the XML stream used to read the content of the response, and now it works correctly.
I'll raise a JIRA and attach the changed code.

Regards
Gianfranco Boccalon


Guillaume Nodet ha scritto:
Everything happen in JbiInWsdl1Interceptor, in the servicemix-cxf-bc module.
I would recommend setting a breakpoint there and debug.

On Mon, Feb 25, 2008 at 1:51 PM, Gianfranco Boccalon
<[EMAIL PROTECTED]> wrote:
It should be compliant to the WSDL.
 Where on the code this check is performed ?

 Guillaume Nodet ha scritto:


Is the response compliant with the WSDL description of you service ?
 > I think it might be of importance the component when building the response
 > with the JBI wrapper.
 >
 > On Mon, Feb 25, 2008 at 1:39 PM, Gianfranco Boccalon
 > <[EMAIL PROTECTED]> wrote:
 >
 >> This is the response message produced by the CXF BC provider:
 >>
 >>  INFO  - SimpleExchangeListener         - InOnly[
 >>   id: ID:192.168.20.106-11850545062-2:1
 >>   status: Done
 >>   role: provider
 >>   service: {urn:eng:spagic:processes:mtom3:v0}mtom3.End4_v_0
 >>   endpoint: mtom3.End4_v_0
 >>   in: <?xml version="1.0" encoding="UTF-8"?><jbi:message
 >>  xmlns:jbi="http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper";
 >>  xmlns:msg="urn:eng:spagic:processes:mtom3:v0"
 >>  name="ProvideAndRegisterDocumentSet-bResponse_Message"
 >>  type="msg:ProvideAndRegisterDocumentSet-bResponse_Message"
 >>  version="1.0"><jbi:part><wsa:Action
 >>  
xmlns:wsa="http://www.w3.org/2005/08/addressing";>urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-bResponse</wsa:Action></jbi:part></jbi:message>
 >>  ]
 >>
 >>  and this is the response provided by the external web service (traced
 >>  with a TCP monitor):
 >>
 >>  HTTP/1.1 200 OK
 >>  Server: Apache-Coyote/1.1
 >>  Content-Type: application/soap+xml;
 >>  
action="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-bResponse";charset=UTF-8
 >>  Transfer-Encoding: chunked
 >>  Date: Mon, 25 Feb 2008 12:23:34 GMT
 >>
 >>  21b
 >>  <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope
 >>  xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";
 >>  
xmlns:wsa="http://www.w3.org/2005/08/addressing";><soapenv:Header><wsa:Action>urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-bResponse</wsa:Action><wsa:RelatesTo>urn:uuid:138991F87C7A640C321203942221068</wsa:RelatesTo></soapenv:Header><soapenv:Body><rs:RegistryResponse
 >>  xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0"
 >>  status="urn:oasis:names:tc:ebxml-regrep:ResponseStatusType:Success"
 >>  /></soapenv:Body></soapenv:Envelope>
 >>  0
 >>
 >>
 >>
 >>
 >>  Freeman Fang ha scritto:
 >>
 >>
 >>
 >>> In the code of the CXF BC provider, we register the MessageObserver which
 >>>
 >>  > handle the response
 >>  >
 >>  > CxfBcProviderMessageObserver obs = new
 >>  > CxfBcProviderMessageObserver(exchange, this);
 >>  > conduit.setMessageObserver(obs);
 >>  >
 >>  > And [1] for more details about the CxfBcProviderMessageObserver.
 >>  >
 >>  > You mentioned you see the response jbi message produced by the cxf bc
 >>  > provider, but it doesn't contain the external webservice response, would 
you
 >>  > please
 >>  > append the jbi message you see, and if possible, append the soap message
 >>  > from external webservice as well.
 >>  >
 >>  > 
[1]http://svn.apache.org/repos/asf/servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/CxfBcProviderMessageObserver.java
 >>  >
 >>  > Freeman
 >>  > On Mon, Feb 25, 2008 at 7:09 PM, Gianfranco Boccalon <[EMAIL PROTECTED]>
 >>  > wrote:
 >>  >
 >>  >
 >>  >> I dont have any exception: I'm saying that the response message produced
 >>  >> by the CXF BC provider doesn't contain the response of the external web
 >>  >> service.
 >>  >> In the code of the CXF BC provider I dont see any line of code managing
 >>  >> the response of the Web service called, I see only the code about
 >>  >> sending the output stream of the HTTP request.
 >>  >>
 >>  >> I saw that in the HTTPConduit there is the method getBackChannel for
 >>  >> managing the response, but I dont found where it is used (may be it's
 >>  >> not used ?).
 >>  >>
 >>  >> Guillaume Nodet ha scritto:
 >>  >>
 >>  >>> I don't see why it would fail.
 >>  >>> Do you have any exceptions in the log ? Have you tried at DEBUG level
 >>  >>> (it sometimes change the behavior due to the logging of messages).
 >>  >>>
 >>  >>> On Mon, Feb 25, 2008 at 11:44 AM, Gianfranco Boccalon
 >>  >>> <[EMAIL PROTECTED]> wrote:
 >>  >>>
 >>  >>>
 >>  >>>> Hi all,
 >>  >>>>  I'm using the CXF BC provider in a pipeline: the problem is that the
 >>  >>>>  response that I receive from the external web service is not included
 >>  >>>>
 >>  >> on
 >>  >>
 >>  >>>>  the response message of the CXF BC provider.
 >>  >>>>
 >>  >>>>  My SA is :
 >>  >>>>
 >>  >>>>  File Component -> EIP pipeline containing a CXF BC provider calling 
an
 >>  >>>>  external Web service -> Console output BC
 >>  >>>>
 >>  >>>>  The External web service is called without problems but I'm not able
 >>  >>>>
 >>  >> to
 >>  >>
 >>  >>>>  see its response on the console: I see the jbi:message produced by 
the
 >>  >>>>  CXF BC, but it doesn't contain the external web service response.
 >>  >>>>
 >>  >>>>  Any suggestion ?
 >>  >>>>
 >>  >>>>
 >>  >>>>
 >>  >>>
 >>  >>>
 >>  >>>
 >>  >>
 >>  >
 >>  >
 >>
 >>
 >>
 >
 >
 >
 >






Reply via email to