Morning Freeman,

I tried to modify my SOAP message, but it didn't work : i still get the same
error. 
I also tried to call the web service with this enveloppe and a standalone
client : i got a "wrong parameter error".

I think my SOAP message is correct : i tried to generate it from the RAD 7
web service test and it was the same one. Plus, my business method has one
parameter (a string) and a complex type as return type.

As i'm totally new to servicemix, so there is probably something i don't
understand.

What i want to do :
SOAP message <--> Servicemix cxf bc <---> SOAP message <-->Websphere
Application Server

Considering the debug log, what i think it's going on :
SOAP message <--> Servicemix cxf bc <---> JBI message <-->Websphere
Application Server

So, i don't think WAS support JBI message... and that could explain my error
(i no longer think it's a soap verion problem).

http://localhost:9080/PROTOServiceMixWeb/services/ProtoBean = thrid party
web service URL.
http://localhost:8092/ProtoBeanService/ = servicemix web service.

I only want to call my web service, but i want to call it using a servicemix
URL.

Thanks again for your help,
Best Regards,
Florent.



Freeman Fang wrote:
> 
> Hi Florent,
> 
> This problem has nothing to do with soap version.
> 
> The problem is that your hard code soap request message is not correct.
> 
> According to the schema in wsdl you append, it should be something like
> 
> <env:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> xmlns:en
> v="http://schemas.xmlsoap.org/soap/envelope/";
> xmlns:xsd="http://www.w3.org/2001/
> XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xmlns:tns="http
> ://ejb.proto.mycompany.com"><env:Body><tns:getProtoDTO>
> <date>your date</date>
> <dble>your dble</dble>
> <integ>your integ</integ>
> <liste>your liste</liste>
> </tns:getPr
> otoDTO></env:Body></env:Envelope>
> 
> You shouldn't use 
> <tns:getProtoDTO>something</tns:getProtoDTO> directly without element tag
> defined in the schema.
> For some complex schema, write soap message yourself is not so easy, so we
> prefer to use some soap tool kit to generate soap message for you, may be
> you can  try to use apache cxf, basically generate code stub from the
> wsdl, and what you need do is just write client invoke code as normal java
> operation invoke and  cxf will genearate soap message for you.
> 
> Would you please try it again?
> 
> Best Regards
> 
> Freeman
> 
> 
> 
> 
> Florent wrote:
>> Hi Freeman,
>>
>> Indeed, http://localhost:9080/PROTOServiceMixWeb/services/ProtoBean use
>> soap
>> 1.1.
>> But i don't know which soap version
>> http://localhost:8092/ProtoBeanService/
>> is using...
>>
>> The third party webservice is hosted by Websphere Application Server 6.1.
>>
>> I don't really know what cxf is doing to the message, is it possible to
>> log/trace it?
>>
>> I enabled debug log and added interceptors in my xbean.xml, here is the
>> output :
>>
>> INFO: Inbound Message
>> --------------------------------------
>> Encoding: utf-8
>> Headers: {Content-Length=[353], User-Agent=[IBM WebServices/1.0],
>> Host=[ITEM-509
>> 73:8092], connection=[Keep-Alive], Date=[Mon, 26 Nov 2007 08:59:47 GMT],
>> SOAPAct
>> ion=[], Pragma=[no-cache], content-type=[text/xml; charset=utf-8],
>> Cache-Control
>> =[no-cache], Accept=[application/soap+xml,multipart/related,text/*]}
>> Message:
>> <env:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
>> xmlns:en
>> v="http://schemas.xmlsoap.org/soap/envelope/";
>> xmlns:xsd="http://www.w3.org/2001/
>> XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>> xmlns:tns="http
>> ://ejb.proto.mycompany.com"><env:Body><tns:getProtoDTO>ddd</tns:getPr
>> otoDTO></env:Body></env:Envelope>
>> --------------------------------------
>> DEBUG - CxfBcComponent                 - Created correlation id:
>> ID:172.16.180.193-1167b1f58b2-4:1
>> DEBUG - DeliveryChannelImpl            - SendSync
>> ID:172.16.180.193-1167b1f58b2-4:1 in DeliveryChannel{servicemix-cxf-bc}
>> DEBUG - SedaFlow                       - Called Flow send
>> DEBUG - DeliveryChannelImpl            - Waiting for exchange
>> ID:172.16.180.193-1167b1f58b2-4:1 (1d7a7b3) to be answered in
>> DeliveryChannel{servicemix-cxf-bc} from sendSync
>> DEBUG - SedaQueue                      -
>> [EMAIL PROTECTED] dequeued
>> exchange: InOut[
>>   id: ID:172.16.180.193-1167b1f58b2-4:1
>>   status: Active
>>   role: provider
>>   interface: {http://ejb.proto.mycompany.com}ProtoBean
>>   service: {http://ejb.proto.mycompany.com}ProtoBeanService
>>   endpoint: ProtoBean
>>   operation: {http://ejb.proto.mycompany.com}getProtoDTO
>>   in: <?xml version="1.0" encoding="UTF-8"?><jbi:message
>> xmlns:jbi="http://java.
>> sun.com/xml/ns/jbi/wsdl-11-wrapper"
>> xmlns:msg="http://ejb.proto.mycompany.com"; name=
>> "getProtoDTORequest" type="msg:getProtoDTORequest"
>> version="1.0"><jbi:part><tns:
>> getProtoDTO xmlns:tns="http://ejb.proto.mycompany.com";>ddd</tns:getPr
>> otoDTO></jbi:part></jbi:message>
>> ]
>> DEBUG - CxfBcComponent                 - Received exchange: status:
>> Active,
>> role: provider
>> DEBUG - CxfBcComponent                 - Retrieved correlation id:
>> ID:172.16.180.193-1167b1f58b2-4:1
>> DEBUG - DeliveryChannelImpl            - Send
>> ID:172.16.180.193-1167b1f58b2-4:1in DeliveryChannel{servicemix-cxf-bc}
>> DEBUG - SedaFlow                       - Called Flow send
>> DEBUG - SedaQueue                      -
>> [EMAIL PROTECTED] dequeued
>> exchange: InOut[
>>   id: ID:172.16.180.193-1167b1f58b2-4:1
>>   status: Active
>>   role: consumer
>>   interface: {http://ejb.proto.mycompany.com}ProtoBean
>>   service: {http://ejb.proto.mycompany.com}ProtoBeanService
>>   endpoint: ProtoBean
>>   operation: {http://ejb.proto.mycompany.com}getProtoDTO
>>   in: <?xml version="1.0" encoding="UTF-8"?><jbi:message
>> xmlns:jbi="http://java.
>> sun.com/xml/ns/jbi/wsdl-11-wrapper"
>> xmlns:msg="http://ejb.proto.mycompany.com"; name=
>> "getProtoDTORequest" type="msg:getProtoDTORequest"
>> version="1.0"><jbi:part><tns:
>> getProtoDTO xmlns:tns="http://ejb.proto.mycompany.com";>ddd</tns:getPr
>> otoDTO></jbi:part></jbi:message>
>>   out: null
>> ]
>> DEBUG - DeliveryChannelImpl            - Notifying exchange
>> ID:172.16.180.193-1167b1f58b2-4:1(1d7a7b3) in
>> DeliveryChannel{servicemix-cxf-bc} from processInboundSynchronousExchange
>> DEBUG - DeliveryChannelImpl            - Notified:
>> ID:172.16.180.193-1167b1f58b2-4:1(1d7a7b3) in
>> DeliveryChannel{servicemix-cxf-bc} from sendSync
>> 26 nov. 2007 09:59:48
>> org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose
>> INFO: Outbound Message
>> --------------------------------------
>> <soap:Envelope
>> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";><soap:Body
>>  /></soap:Envelope>
>> --------------------------------------
>> DEBUG - DeliveryChannelImpl            - Send
>> ID:172.16.180.193-1167b1f58b2-4:1
>> in DeliveryChannel{servicemix-cxf-bc}
>> DEBUG - SedaFlow                       - Called Flow send
>> DEBUG - SedaQueue                      -
>> [EMAIL PROTECTED] dequeued
>> exchange: InOut[
>>   id: ID:172.16.180.193-1167b1f58b2-4:1
>>   status: Done
>>   role: provider
>>   interface: {http://ejb.proto.mycompany.com}ProtoBean
>>   service: {http://ejb.proto.mycompany.com}ProtoBeanService
>>   endpoint: ProtoBean
>>   operation: {http://ejb.proto.mycompany.com}getProtoDTO
>>   in: <?xml version="1.0" encoding="UTF-8"?><jbi:message
>> xmlns:jbi="http://java.
>> sun.com/xml/ns/jbi/wsdl-11-wrapper"
>> xmlns:msg="http://ejb.proto.mycompany.com"; name=
>> "getProtoDTORequest" type="msg:getProtoDTORequest"
>> version="1.0"><jbi:part><tns:
>> getProtoDTO xmlns:tns="http://ejb.proto.mycompany.com";>ddd</tns:getPr
>> otoDTO></jbi:part></jbi:message>
>>   out: null
>> ]
>> DEBUG - CxfBcComponent                 - Received exchange: status: Done,
>> role:provider
>> DEBUG - CxfBcComponent                 - Retrieved correlation id:
>> ID:172.16.180.193-1167b1f58b2-4:1
>> javax.jbi.messaging.MessagingException: Out not supported
>>         at
>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.setMessage(MessageExchangeImpl.java:357)
>>         at
>> org.apache.servicemix.cxfbc.CxfBcProviderMessageObserver.onMessage(CxfBcProviderMessageObserver.java:125)
>>         at
>> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1932)
>>         at
>> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1790)
>>         at
>> org.apache.servicemix.cxfbc.CxfBcProvider.process(CxfBcProvider.java:166)
>>         at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:538)
>>         at
>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:490)
>>         at
>> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>>         at
>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
>>         at
>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:170)
>>         at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167)
>>         at
>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>>         at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>>         at java.lang.Thread.run(Thread.java:595)
>>
>>
>>
>> Here is my wsdl used by servicemix (the one used by the AS is the same
>> one,
>> except the service location) :
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <wsdl:definitions targetNamespace="http://ejb.proto.mycompany.com";
>>      xmlns:impl="http://ejb.proto.mycompany.com";
>>      xmlns:intf="http://ejb.proto.mycompany.com";
>>      xmlns:tns2="http://dto.proto.mycompany.com";
>>      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
>>      xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
>>      xmlns:wsi="http://ws-i.org/profiles/basic/1.1/xsd";
>>      xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>>      <wsdl:types>
>>              <schema targetNamespace="http://ejb.proto.mycompany.com";
>>                      xmlns="http://www.w3.org/2001/XMLSchema";
>>                      xmlns:tns2="http://dto.proto.mycompany.com";
>>                      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
>>                      xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>>                      <import namespace="http://dto.proto.mycompany.com"; />
>>                      <element name="getProtoDTOResponse">
>>                              <complexType>
>>                                      <sequence>
>>                                              <element 
>> name="getProtoDTOReturn"
>>                                                      nillable="true" 
>> type="tns2:ProtoDTO" />
>>                                      </sequence>
>>                              </complexType>
>>                      </element>
>>                      <element name="getProtoDTO">
>>                              <complexType>
>>                                      <sequence>
>>                                              <element name="param" 
>> nillable="true"
>>                                                      type="xsd:string" />
>>                                      </sequence>
>>                              </complexType>
>>                      </element>
>>                      <complexType name="ArrayOf_xsd_nillable_string">
>>                              <sequence>
>>                                      <element maxOccurs="unbounded" 
>> minOccurs="0"
>>                                              name="string" nillable="true" 
>> type="xsd:string" />
>>                              </sequence>
>>                      </complexType>
>>              </schema>
>>              <schema targetNamespace="http://dto.proto.mycompany.com";
>>                      xmlns="http://www.w3.org/2001/XMLSchema";
>>                      xmlns:intf="http://ejb.proto.mycompany.com";
>>                      xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
>>                      xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>>                      <import namespace="http://ejb.proto.mycompany.com"; />
>>                      <complexType name="ProtoDTO">
>>                              <sequence>
>>                                      <element name="date" nillable="true"
>>                                              type="xsd:dateTime" />
>>                                      <element name="dble" nillable="true"
>>                                              type="xsd:double" />
>>                                      <element name="integ" type="xsd:int" />
>>                                      <element name="liste" nillable="true"
>>                                              
>> type="impl:ArrayOf_xsd_nillable_string" />
>>                              </sequence>
>>                      </complexType>
>>              </schema>
>>      </wsdl:types>
>>
>>      <wsdl:message name="getProtoDTORequest">
>>              <wsdl:part element="intf:getProtoDTO" name="parameters" />
>>
>>      </wsdl:message>
>>
>>      <wsdl:message name="getProtoDTOResponse">
>>              <wsdl:part element="intf:getProtoDTOResponse" name="parameters" 
>> />
>>
>>      </wsdl:message>
>>
>>      <wsdl:portType name="ProtoBean">
>>              <wsdl:operation name="getProtoDTO">
>>                      <wsdl:input message="intf:getProtoDTORequest"
>>                              name="getProtoDTORequest" />
>>
>>                      <wsdl:output message="intf:getProtoDTOResponse"
>>                              name="getProtoDTOResponse" />
>>
>>              </wsdl:operation>
>>
>>      </wsdl:portType>
>>
>>      <wsdl:binding name="ProtoBeanSoapBinding" type="intf:ProtoBean">
>>
>>              <wsdlsoap:binding style="document"
>>                      transport="http://schemas.xmlsoap.org/soap/http"; />
>>
>>              <wsdl:operation name="getProtoDTO">
>>                      <wsdlsoap:operation soapAction="getProtoDTO" />
>>
>>                      <wsdl:input name="getProtoDTORequest">
>>                              <wsdlsoap:body use="literal" />
>>
>>                      </wsdl:input>
>>
>>                      <wsdl:output name="getProtoDTOResponse">
>>                              <wsdlsoap:body use="literal" />
>>
>>                      </wsdl:output>
>>
>>              </wsdl:operation>
>>
>>      </wsdl:binding>
>>
>>      <wsdl:service name="ProtoBeanService">
>>              <wsdl:port binding="intf:ProtoBeanSoapBinding"
>>                      name="ProtoBean">
>>                      <wsdlsoap:address
>>                              
>> location="http://localhost:8092/ProtoBeanService/"; />
>>
>>              </wsdl:port>
>>
>>      </wsdl:service>
>>
>> </wsdl:definitions>
>>
>> Thanks in advance,
>> Florent.
>>
>>
>> Freeman Fang-2 wrote:
>>   
>>> Hi Florent,
>>> Do you mean 
>>> http://localhost:9080/PROTOServiceMixWeb/services/ProtoBean   use 
>>> soap1.1 and http://localhost:8092/ProtoBeanService/  use soap 1.2?
>>> Which soap toolkit are the third party webservice using?
>>> Would you please append the wsdl used for two webservices?
>>>
>>> Best Regards
>>>
>>> Freeman
>>>
>>>
>>> Florent wrote:
>>>     
>>>> If i use the following code to access to my web service, it works fine
>>>> : 
>>>>
>>>> String endpoint =
>>>> "http://localhost:9080/PROTOServiceMixWeb/services/ProtoBean";;
>>>>
>>>> String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
>>>>                                            "<env:Envelope
>>>> xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\";
>>>> " +
>>>>                                    
>>>> "xmlns:tns=\"http://ejb.proto.mycompany.com\";>" +
>>>>                                    "<env:Body>" +
>>>>                                    "<tns:getProtoDTO>" +
>>>>                                    
>>>> "<tns:getProtoDTORequest>0</tns:getProtoDTORequest>" +
>>>>                                    "</tns:getProtoDTO>" +
>>>>                                            "</env:Body>" +
>>>>                                            "</env:Envelope>";
>>>>            
>>>>            MessageFactory mf = MessageFactory.newInstance();
>>>>            SOAPMessage smsg = mf.createMessage(new MimeHeaders(), new
>>>> ByteArrayInputStream(xml.getBytes()));
>>>>            
>>>>            SOAPConnection conn =
>>>> SOAPConnectionFactory.newInstance().createConnection();
>>>>         SOAPMessage response = conn.call(smsg, url);
>>>>         
>>>>         SOAPEnvelope env = response.getSOAPPart().getEnvelope();
>>>>
>>>>
>>>> If i try to call the fellowing url :
>>>> http://localhost:8092/ProtoBeanService/
>>>> i get an error : No SOAPAction header (Application server log)...
>>>> That's
>>>> why
>>>> i was wondering about the soap version.
>>>>
>>>> I get the following error in servicemix log : 
>>>>
>>>> javax.jbi.messaging.MessagingException: Out not supported
>>>>         at
>>>> org.apache.servicemix.jbi.messaging.MessageExchangeImpl.setMessage(MessageExchangeImpl.java:357)
>>>>         at
>>>> org.apache.servicemix.cxfbc.CxfBcProviderMessageObserver.onMessage(CxfBcProviderMessageObserver.java:125)
>>>>         at
>>>> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1932)
>>>>         at
>>>> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1790)
>>>>         at
>>>> org.apache.servicemix.cxfbc.CxfBcProvider.process(CxfBcProvider.java:166)
>>>>         at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:538)
>>>>         at
>>>> org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:490)
>>>>         at
>>>> org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
>>>>         at
>>>> org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:610)
>>>>         at
>>>> org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:170)
>>>>         at
>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:167)
>>>>         at
>>>> org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
>>>>         at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>>>>         at
>>>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>>>>         at java.lang.Thread.run(Thread.java:595)
>>>>
>>>>
>>>> Any idea?
>>>>
>>>> Thank you in advance,
>>>> Florent.
>>>>
>>>>
>>>>
>>>> Freeman Fang wrote:
>>>>   
>>>>       
>>>>> Hi,
>>>>>
>>>>> You needn't specify it in cxf bc endpint configuration. Cxf bc should 
>>>>> support both of it by default.
>>>>> Cxf bc will parse the wsdl you provided and create service model 
>>>>> accordingly, extract soap version from your wsdl binding part.
>>>>>
>>>>> Best Regards
>>>>>
>>>>> Freeman
>>>>>
>>>>>
>>>>> Florent wrote:
>>>>>     
>>>>>         
>>>>>> Hello,
>>>>>>
>>>>>> I'm trying to expose a third party webservice to the bus, using cxf.
>>>>>>
>>>>>> I'd like to know if i can set the soap version. For example, when i
>>>>>> was
>>>>>> using service-http, there was a SoapVersion attribute, but i didn't
>>>>>> find
>>>>>> one
>>>>>> for the servicemix-cxf-bc-3.2-schema.
>>>>>>
>>>>>> Is soap 1.1 or 1.2 used?
>>>>>>
>>>>>> Here is my xbean.xml :
>>>>>>
>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>> <beans xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0";
>>>>>>        xmlns:ns1="http://ejb.proto.mycompany.com";>
>>>>>>        
>>>>>>       <cxfbc:consumer 
>>>>>>                         wsdl="classpath:ProtoBean.wsdl" 
>>>>>>                         endpoint="ProtoBeanPort"
>>>>>>                         targetEndpoint="ProtoBean" 
>>>>>>                         targetService="ns1:ProtoBeanService" 
>>>>>>                         targetInterface="ns1:ProtoBean" 
>>>>>>                         > 
>>>>>>       </cxfbc:consumer> 
>>>>>>   
>>>>>>       <cxfbc:provider 
>>>>>>                         wsdl="classpath:ProtoBean.wsdl" 
>>>>>>                        
>>>>>> locationURI="http://localhost:9080/PROTOServiceMixWeb/services/ProtoBean";
>>>>>>  
>>>>>>                         service="ns1:ProtoBeanService" 
>>>>>>                         endpoint="ProtoBean" 
>>>>>>                         interfaceName="ns1:ProtoBean" 
>>>>>>                         > 
>>>>>>       </cxfbc:provider>
>>>>>>
>>>>>> </beans> 
>>>>>>
>>>>>>
>>>>>>   
>>>>>>       
>>>>>>           
>>>>>     
>>>>>         
>>>>   
>>>>       
>>>     
>>
>>   
> 
> 

-- 
View this message in context: 
http://www.nabble.com/servicemix-cxf-bc---soapVersion-attribute-tf4860627s12049.html#a13967081
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to