I only see an update SaajMarshaller - is that it?

> -----Original Message-----
> From: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, December 20, 2005 4:08 PM
> To: [email protected]
> Subject: Re: [servicemix-user] Problems invoking a web 
> service with SOAP
> 
> 
> I have modified the SaajBinding to handle such cases.
> Could you give it a try ?
> 
> Cheers,
> Guillaume Nodet
> 
> [EMAIL PROTECTED] wrote:
> 
> >Guillaume,
> >
> >I think that we are almost there, but one slight issue 
> remains (well, at
> >least I hope that it is slight). The first piece of XML 
> below is the output
> >from our webservice that is invoked via the SaajComponent:
> >
> ><?xml version="1.0" encoding="UTF-8"?>
> ><e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/";
> >xmlns:d="http://www.w3.org/2001/XMLSchema";
> >xmlns:i="http://www.w3.org/2001/XMLSchema-instance";
> >xmlns:wn0="http://idoox.com/interface";
> >xmlns:wn1="http://systinet.com/soap-jta/";
> >xmlns:wn2="http://systinet.com/wsdl/com/cexp/ws/test/";>
> >    <e:Body>
> >        <wn2:getPersonResponse>
> >            <wn2:response i:type="wn2:Person">
> >                <wn2:descriptioni:type="d:string">Desktop customizer
> >(1135104068804)</wn2:description>
> >                <wn2:firstName 
> i:type="d:string">Jonathan</wn2:firstName>
> >                <wn2:lastName 
> i:type="d:string">Edwards</wn2:lastName>
> >            </wn2:response>
> >        </wn2:getPersonResponse>
> >    </e:Body>
> ></e:Envelope>
> >
> >The above output is only slightly different from the XML 
> returned from the
> >HttpSoapConnector that is being used (the sequence is SoapClient ->
> >HttpSoapConnector -> SaajComponent -> SoapService, and back, 
> using InOut
> >MEP):
> >
> ><?xml version='1.0' encoding='UTF-8'?>
> ><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
> >xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> >xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> >    <soap:Body>
> >        <wn2:getPersonResponse
> >xmlns:wn2="http://systinet.com/wsdl/com/cexp/ws/test/";>
> >            <wn2:response
> >xmlns:wn2="http://systinet.com/wsdl/com/cexp/ws/test/";
> >xmlns:i="http://www.w3.org/2001/XMLSchema-instance"; 
> i:type="wn2:Person">
> >                <wn2:description
> >xmlns:wn2="http://systinet.com/wsdl/com/cexp/ws/test/";
> >xmlns:i="http://www.w3.org/2001/XMLSchema-instance";
> >i:type="d:string">Desktop customizer 
> (1135102658677)</wn2:description>
> >                <wn2:firstName
> >xmlns:wn2="http://systinet.com/wsdl/com/cexp/ws/test/";
> >xmlns:i="http://www.w3.org/2001/XMLSchema-instance";
> >i:type="d:string">Jonathan</wn2:firstName>
> >                <wn2:lastName
> >xmlns:wn2="http://systinet.com/wsdl/com/cexp/ws/test/";
> >xmlns:i="http://www.w3.org/2001/XMLSchema-instance";
> >i:type="d:string">Edwards</wn2:lastName>
> >            </wn2:response>
> >        </wn2:getPersonResponse>
> >    </soap:Body>
> ></soap:Envelope>
> >
> >Most of the namespace information is preserved, except for 
> one critical
> >element: the 'xmlns:d="http://www.w3.org/2001/XMLSchema";' 
> namespace, present
> >in the first XML output is missing from the second one. This 
> omission causes
> >problems for the SOAP stack that we are using when it 
> attempts to resolve
> >the "d:string" values. I am not sure if the shortcoming is in the
> >HttpSoapConnector or the SaajComponent.
> >
> >thanks for your help!
> >
> >/jonathan
> >
> >  
> >
> >>-----Original Message-----
> >>From: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> >>Sent: Tuesday, December 20, 2005 12:57 AM
> >>To: [email protected]
> >>Subject: Re: [servicemix-user] Problems invoking a web 
> >>service with SOAP
> >>
> >>
> >>This should now be fixed on svn head in apache incubator.
> >>If you do not want to update your whole source tree, you can just
> >>grab the SaajMarshaler at 
> >>http://svn.apache.org/viewcvs.cgi/incubator/servicemix/trunk/s
> >>ervicemix-components/src/main/java/org/servicemix/components/s
> >>aaj/SaajMarshaler.java?rev=357934&view=markup
> >>
> >>Guillaume
> >>
> >>[EMAIL PROTECTED] wrote:
> >>
> >>    
> >>
> >>>Guillaume,
> >>>
> >>>Using the HttpSoapConnector (from v1055 svn.codehaus.org) to 
> >>>      
> >>>
> >>communicate
> >>    
> >>
> >>>with a different web service, I now get the following 
> >>>      
> >>>
> >>response (Execution
> >>    
> >>
> >>>is: SoapClient -> HttpSoapConnector -> SaajComponent -> 
> WebService): 
> >>>
> >>><?xml version='1.0' encoding='UTF-8'?>
> >>><soap:Envelope 
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
> >>>xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> >>>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> >>>   <soap:Body>
> >>>       <e:Envelope 
> >>>      
> >>>
> >>xmlns:e="http://schemas.xmlsoap.org/soap/envelope/";
> >>    
> >>
> >>>xmlns:d="http://www.w3.org/2001/XMLSchema";
> >>>xmlns:i="http://www.w3.org/2001/XMLSchema-instance";
> >>>xmlns:wn0="http://idoox.com/interface";
> >>>xmlns:wn1="http://systinet.com/soap-jta/";
> >>>xmlns:wn2="http://systinet.com/wsdl/com/cexp/ws/test/";>
> >>>           <e:Body>
> >>>               <wn2:getPersonResponse
> >>>xmlns:wn2="http://systinet.com/wsdl/com/cexp/ws/test/";>
> >>>                   <wn2:response i:type="wn2:Person">
> >>>                       <wn2:description i:type="d:string">Desktop
> >>>customizer</wn2:description>
> >>>                       <wn2:firstName
> >>>i:type="d:string">Jonathan</wn2:firstName><wn2:lastName
> >>>i:type="d:string">Edwards</wn2:lastName>
> >>>                   </wn2:response>
> >>>               </wn2:getPersonResponse>
> >>>           </e:Body>
> >>>       </e:Envelope>
> >>>   </soap:Body>
> >>></soap:Envelope>
> >>>
> >>>As you can see, the output from the SaajComponent is being 
> >>>      
> >>>
> >>re-wrapped by the
> >>    
> >>
> >>>HttpSoapConnector in another SoapEnvelope. Is this the 
> >>>      
> >>>
> >>expected behavior?
> >>    
> >>
> >>>/jonathan
> >>>
> >>> 
> >>>
> >>>      
> >>>
> >>>>-----Original Message-----
> >>>>From: Guillaume Nodet [mailto:[EMAIL PROTECTED]
> >>>>Sent: Monday, December 19, 2005 1:34 PM
> >>>>To: [email protected]
> >>>>Subject: Re: [servicemix-user] Problems invoking a web 
> >>>>service with SOAP
> >>>>
> >>>>
> >>>>You should try using the HttpSoapConnector instead of the 
> >>>>HttpConnector 
> >>>>+ XSLT transformer.
> >>>>The HttpSoapConnector uses a DOM representation to extract 
> >>>>the element 
> >>>>in the Body tag, so
> >>>>there should be no parsing errors.
> >>>>
> >>>>Cheers,
> >>>>Guillaume Nodet
> >>>>
> >>>>[EMAIL PROTECTED] wrote:
> >>>>
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>Help!
> >>>>>
> >>>>>I have run in to a slight problem with an exchange that I 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>have set up within
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>ServiceMix. The set up is as follows:
> >>>>>
> >>>>>Soap Client -> HttpConnector -> ChainedComponent -> (XSLT to 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>remove SOAP
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>body -> SaajComponent -> SOAP Web Service)
> >>>>>
> >>>>>This operation is synchronous, and works on simple XML where 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>there are no
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>complex namespaces in the XML. Ths following request, 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>however, does not
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>function as expected:
> >>>>>
> >>>>><?xml version="1.0" encoding="UTF-8"?>.
> >>>>><e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/";
> >>>>>xmlns:d="http://www.w3.org/2001/XMLSchema";
> >>>>>xmlns:i="http://www.w3.org/2001/XMLSchema-instance";
> >>>>>xmlns:wn0="http://systinet.com/xsd/SchemaTypes/";
> >>>>>xmlns:wn1="http://systinet.com/wsdl/com/cexp/coe/bob/ws/c
> ustomer/"
> >>>>>xmlns:wn2="http://systinet.com/soap-jta/";
> >>>>>xmlns:wn3="http://systinet.com/wsdl/com/cexp/coe/bob/services
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>/order/pojo/">
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>><e:Body>
> >>>>>  <wn1:getCustomerInfo>
> >>>>>    <wn1:userId i:type="d:string">akayali</wn1:userId>
> >>>>>  </wn1:getCustomerInfo>
> >>>>></e:Body>
> >>>>></e:Envelope>
> >>>>>
> >>>>>As you can see, there is an implicit namespace reference 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>within the "i:type"
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>field, that is "string" has the namespace "d" associated 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>with it. The simple
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>XSLT body extraction does not capture any of the namespace 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>information, as
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>it is located within the Envelope declaration. The Saaj 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>components tries to
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>deal with this, and does a noble job, that results in this XML:
> >>>>>
> >>>>><SOAP-ENV:Envelope
> >>>>>xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";>
> >>>>><SOAP-ENV:Header/>
> >>>>><SOAP-ENV:Body>
> >>>>>  <wn1:getCustomerInfo
> >>>>>xmlns:wn1="http://systinet.com/wsdl/com/cexp/coe/bob/ws/cus
> >>>>>          
> >>>>>
> >>tomer/">.
> >>    
> >>
> >>>>>    <wn1:userId 
> >>>>>          
> >>>>>
> >>xmlns:i="http://www.w3.org/2001/XMLSchema-instance";
> >>    
> >>
> >>>>>i:type="d:string">akayali</wn1:userId>.
> >>>>>  </wn1:getCustomerInfo>
> >>>>></SOAP-ENV:Body>
> >>>>></SOAP-ENV:Envelope> 
> >>>>>
> >>>>>As you can see, the Saaj component determines that the 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>namespace "i" must be
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>declared, but because "d" is implied only within the value 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>for the type
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>field, the Saaj component does not declare it (I assume that 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>it does not
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>introspect the value fields at all). Because "d" is not 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>present in the SOAP
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>request that is passed to the SOAP web service, the 
> >>>>>          
> >>>>>
> >>service throws an
> >>    
> >>
> >>>>>exception while trying to deserialize/parse.
> >>>>>
> >>>>>I thought that I could work around this, and utilize the 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>HttpSoapConnector
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>and HttpSoapInvoker components, but I fear that these will 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>suffer from the
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>same issues. Moreover, I don't think that the 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>HttpSoapInvoker is setting up
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>the Http header information correctly for a Soap service 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>invocation (there
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>is no SoapAction specified at all, and the content-type is 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>text/html),
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>resulting in a 400 response. Is this the expected behavior of
> >>>>>HttpSoapInvoker?
> >>>>>
> >>>>>I am thinking about writing a custom XSL to extract the 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>namespaces from the
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>incoming message and place them in the first node of the 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>body, but I am not
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>sure if this is feasible with XSL (that is, can you access 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>the namespace in
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>XSL and treat it like any other attribute?).
> >>>>>
> >>>>>Any help is welcome, including other components within 
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>>>ServiceMix that might
> >>>>   
> >>>>
> >>>>        
> >>>>
> >>>>>work.
> >>>>>
> >>>>>regards,
> >>>>>/jonathan
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>     
> >>>>>
> >>>>>          
> >>>>>
> >>> 
> >>>
> >>>      
> >>>
> >
> >
> >  
> >
> 

Reply via email to