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.