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#a13946239
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to