The web service exposed is deployed in tomcat 4.1.29 with axis. To call the web service I have generated stub class (java class) with Axis, but unfortunately I have a little problem with WSDL generated by service mix. It seems WSDL is not generated correctly. As you can see at this link http://www.nabble.com/forum/ViewPost.jtp?post=8369564&framed=y&skin=12049 http://www.nabble.com/forum/ViewPost.jtp?post=8369564&framed=y&skin=12049
I will notice when I solve the problem. Massimo beyond30lyc wrote: > > 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#a8371023 Sent from the ServiceMix - User mailing list archive at Nabble.com.
