Thank you very much! I am looking for this method for a whole day,but have you used this method to integrate the .NET external web service? And i think that when we call a web service,we have to generate a proxy first,when we do this, Shall we generate sources first,or this will be done automaticaly when we call the service. Wishing for your help!
pascale4 wrote: > > Hi, > after a lot of test I learnt how to expose an external web service through > http-component. > > Suppose you have a web service with this wsdl : > > <?xml version="1.0" encoding="UTF-8"?> > <wsdl:definitions > targetNamespace="http://localhost:8080/helloworldws/services/HelloWorldService" > xmlns="http://schemas.xmlsoap.org/wsdl/" > xmlns:apachesoap="http://xml.apache.org/xml-soap" > xmlns:impl="http://localhost:8080/helloworldws/services/HelloWorldService" > xmlns:intf="http://localhost:8080/helloworldws/services/HelloWorldService" > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > <wsdl:types/> > <wsdl:message name="echoResponse"> > <wsdl:part name="echoReturn" type="xsd:string"/> > </wsdl:message> > <wsdl:message name="echoRequest"> > </wsdl:message> > <wsdl:portType name="HelloWorldService"> > <wsdl:operation name="echo"> > <wsdl:input message="impl:echoRequest" name="echoRequest"/> > <wsdl:output message="impl:echoResponse" name="echoResponse"/> > </wsdl:operation> > </wsdl:portType> > <wsdl:binding name="HelloWorldServiceSoapBinding" > type="impl:HelloWorldService"> > <wsdlsoap:binding style="rpc" > transport="http://schemas.xmlsoap.org/soap/http"/> > <wsdl:operation name="echo"> > <wsdlsoap:operation soapAction=""/> > <wsdl:input name="echoRequest"> > <wsdlsoap:body > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > namespace="http://localhost:8080/helloworldws/services/HelloWorldService" > use="encoded"/> > </wsdl:input> > <wsdl:output name="echoResponse"> > <wsdlsoap:body > encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > namespace="http://localhost:8080/helloworldws/services/HelloWorldService" > use="encoded"/> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > <wsdl:service name="HelloWorldServiceService"> > <wsdl:port binding="impl:HelloWorldServiceSoapBinding" > name="HelloWorldService"> > <wsdlsoap:address > location="http://localhost:8080/helloworldws/services/HelloWorldService"/> > </wsdl:port> > </wsdl:service> > </wsdl:definitions> > > Then you have to define an http-component provider with this xbean.xml : > > <?xml version="1.0" encoding="UTF-8"?> > <beans > xmlns:http="http://servicemix.apache.org/http/1.0" > > xmlns:ns1="http://localhost:8080/helloworldws/services/HelloWorldService" >> > <http:endpoint > service="ns1:HelloWorldServiceService" > endpoint="HelloWorldService" > role="provider" > > locationURI="http://localhost:8080/helloworldws/services/HelloWorldService" > > wsdlResource="http://localhost:8080/helloworldws/services/HelloWorldService?wsdl" > /> > </beans> > > where > - ns1 : must match namespaces in wsdl > - service : must match value of attribute name of element wsdl:service in > wsdl > <wsdl:service name="HelloWorldServiceService"> > - endpoint : must match value of attribute name of element wsdl:port > <wsdl:port binding="impl:HelloWorldServiceSoapBinding" > name="HelloWorldService"> > > Now you have to define http-component consumer with this xbean.xml : > > <?xml version="1.0" encoding="UTF-8"?> > <beans > xmlns:http="http://servicemix.apache.org/http/1.0" > > xmlns:ns1="http://localhost:8080/helloworldws/services/HelloWorldService" >> > <http:endpoint > service="ns1:HelloWorldServiceConsumer" > endpoint="HelloWorldEndpointConsumer" > role="consumer" > targetService="ns1:HelloWorldServiceService" > locationURI="http://localhost:8192/services/HelloWorldService/" > defaultMep="http://www.w3.org/2004/08/wsdl/in-out" > /> > </beans> > > where > - ns1 : must match namespaces in wsdl > - targetService : must match service value in xbean.xml of provider > <http:endpoint > service="ns1:HelloWorldServiceService" > endpoint="HelloWorldService" > role="provider" > > And this is the jbi.xml of Service Assembly : > <?xml version="1.0" encoding="UTF-8"?> > <jbi xmlns="http://java.sun.com/xml/ns/jbi" version="1.0"> > <service-assembly> > <identification> > <name>helloworld-sa</name> > <description>Codices :: HelloWorld :: SA</description> > </identification> > <service-unit> > <identification> > <name>http-su-provider</name> > <description>Http BC provider</description> > </identification> > <target> > <artifacts-zip>http-su-provider.zip</artifacts-zip> > <component-name>servicemix-http</component-name> > </target> > </service-unit> > <service-unit> > <identification> > <name>http-su-consumer</name> > <description>Http BC consumer</description> > </identification> > <target> > <artifacts-zip>http-su-consumer.zip</artifacts-zip> > <component-name>servicemix-http</component-name> > </target> > </service-unit> > </service-assembly> > </jbi> > > That's all folks > > This is the source http://www.nabble.com/file/5642/helloworld-sa.zip > helloworld-sa.zip > > Massimo > -- View this message in context: http://www.nabble.com/Expose-external-web-service-with-http-component-%28very-simplified%29-tf3014055s12049.html#a8370867 Sent from the ServiceMix - User mailing list archive at Nabble.com.
