Hi. Tutorial is very interesting but I can not find the specific example for my problem. I want to develop a client that connects with the SCA Calculator. The example from http://wiki.eclipse.org/images/7/72/EclipseCON_2009_SOA_Tutorial_Toward---SCA.pdf connects using a RMI binding. This client needs to know the interface from the service that it will be consumed (GlobalWeatherService). It needs the same java code in the client side.
I want an independent client that didn't know java code from SCA Calculator. You can imagine that I haven't developed the SCA Calculator but WSDL contract is published in internet. I only knew the WSDL contract generated by Tuscany. But the problem is that I have an error when I am using WSDL2Java. Person class can not be found. Thank you very much <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="CalculatorServiceService" targetNamespace="http://server.tuscany.telvent.com/" xmlns:tns="http://server.tuscany.telvent.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:SOAP="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:SOAP11="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:types> <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="persona"><xs:sequence><xs:element minOccurs="0" name="altura" type="xs:int"/><xs:element name="edad" type="xs:int"/><xs:element minOccurs="0" name="name" type="xs:string"/></xs:sequence></xs:complexType> </xs:schema> <xs:schema attributeFormDefault="qualified" elementFormDefault="unqualified" targetNamespace="http://server.tuscany.telvent.com/" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:import/><xs:element name="multiply"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="arg0" type="xs:double"/><xs:element minOccurs="0" name="arg1" type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element name="divide"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="arg0" type="xs:double"/><xs:element minOccurs="0" name="arg1" type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element name="add"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="arg0" type="xs:double"/><xs:element minOccurs="0" name="arg1" type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element name="divideResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="return" type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element name="subtractResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="return" type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element name="subtract"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="arg0" type="xs:double"/><xs:element minOccurs="0" name="arg1" type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element name="addResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="return" type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element name="getPersona"><xs:complexType/></xs:element><xs:element name="multiplyResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="return" type="xs:double"/></xs:sequence></xs:complexType></xs:element><xs:element name="getPersonaResponse"><xs:complexType><xs:sequence><xs:element minOccurs="0" name="return" nillable="true" type="persona"/></xs:sequence></xs:complexType></xs:element></xs:schema> </wsdl:types> <wsdl:message name="multiply"> <wsdl:part name="multiply" element="tns:multiply"> </wsdl:part> </wsdl:message> <wsdl:message name="divide"> <wsdl:part name="divide" element="tns:divide"> </wsdl:part> </wsdl:message> <wsdl:message name="add"> <wsdl:part name="add" element="tns:add"> </wsdl:part> </wsdl:message> <wsdl:message name="divideResponse"> <wsdl:part name="divideResponse" element="tns:divideResponse"> </wsdl:part> </wsdl:message> <wsdl:message name="subtractResponse"> <wsdl:part name="subtractResponse" element="tns:subtractResponse"> </wsdl:part> </wsdl:message> <wsdl:message name="subtract"> <wsdl:part name="subtract" element="tns:subtract"> </wsdl:part> </wsdl:message> <wsdl:message name="addResponse"> <wsdl:part name="addResponse" element="tns:addResponse"> </wsdl:part> </wsdl:message> <wsdl:message name="getPersona"> <wsdl:part name="getPersona" element="tns:getPersona"> </wsdl:part> </wsdl:message> <wsdl:message name="multiplyResponse"> <wsdl:part name="multiplyResponse" element="tns:multiplyResponse"> </wsdl:part> </wsdl:message> <wsdl:message name="getPersonaResponse"> <wsdl:part name="getPersonaResponse" element="tns:getPersonaResponse"> </wsdl:part> </wsdl:message> <wsdl:portType name="CalculatorService"> <wsdl:operation name="getPersona"> <wsdl:input message="tns:getPersona"> </wsdl:input> <wsdl:output message="tns:getPersonaResponse"> </wsdl:output> </wsdl:operation> <wsdl:operation name="add"> <wsdl:input message="tns:add"> </wsdl:input> <wsdl:output message="tns:addResponse"> </wsdl:output> </wsdl:operation> <wsdl:operation name="subtract"> <wsdl:input message="tns:subtract"> </wsdl:input> <wsdl:output message="tns:subtractResponse"> </wsdl:output> </wsdl:operation> <wsdl:operation name="divide"> <wsdl:input message="tns:divide"> </wsdl:input> <wsdl:output message="tns:divideResponse"> </wsdl:output> </wsdl:operation> <wsdl:operation name="multiply"> <wsdl:input message="tns:multiply"> </wsdl:input> <wsdl:output message="tns:multiplyResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="CalculatorServiceBinding" type="tns:CalculatorService"> <SOAP:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getPersona"> <SOAP:operation/> <wsdl:input> <SOAP:body use="literal"/> </wsdl:input> <wsdl:output> <SOAP:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="add"> <SOAP:operation/> <wsdl:input> <SOAP:body use="literal"/> </wsdl:input> <wsdl:output> <SOAP:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="subtract"> <SOAP:operation/> <wsdl:input> <SOAP:body use="literal"/> </wsdl:input> <wsdl:output> <SOAP:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="divide"> <SOAP:operation/> <wsdl:input> <SOAP:body use="literal"/> </wsdl:input> <wsdl:output> <SOAP:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="multiply"> <SOAP:operation/> <wsdl:input> <SOAP:body use="literal"/> </wsdl:input> <wsdl:output> <SOAP:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="CalculatorServiceService"> <wsdl:port name="CalculatorServicePort" binding="tns:CalculatorServiceBinding"> <SOAP:address location="http://192.168.3.15:8085/CalculatorServiceComponent"/> </wsdl:port> </wsdl:service> </wsdl:definitions> Un saludo. Santiago Miguel Aranda Rojas Telvent Interactiva Extension: 35999 Vincent Zurczak <vincent.zurc...@ebmwebsourcing.com> Vincent Zurczak 30/03/2009 15:44 Por favor, responda a user Para: user@tuscany.apache.org cc: Asunto: Re: Generating code from WSDL using WSDL2Java Hi. The Eclipse SCA Tools provide some features to allow you to simply call a web service in an SCA application. It does not work with specific message structures, but your case seems pretty simple and it should work without any problem. Basically, it generates you a WS client and then cleans up the code to remove all the unrequired elements. This approach has already been tested with Tuscany 1.4 and it was even part of the SOA tutorial that was presented last week at EclipseCON. You can find an example on the SCA Tools wiki [0]. The tutorial itself is available here [1]. Check the pages 9 and 10 in particular. It shows in details how you can call a web service from an SCA application in few clicks (no need to create another SCA application). There will be another tutorial soon on the STP wiki, to show how you can use JAX-B for more complex referenced web services. Regards, Vincent Zurczak. [0] : http://wiki.eclipse.org/STP/SCA_Component [1] : http://wiki.eclipse.org/images/7/72/EclipseCON_2009_SOA_Tutorial_Toward---SCA.pdf santiago.ara...@telvent.com a écrit : I have running Calculator sample included in apache-tuscany-sca-all-2.0-M1. I have added a new component to this composite service. This is called GetPersonaService. It only has a method "getPersona" that returns an object "Person". It is a complex type with three attributes , age, name, height. I am publishing this component with my CalculatorService like Web Service. <component name="CalculatorServiceComponent"> <implementation.java class= "com.telvent.tuscany.server.CalculatorServiceImpl"/> <service name="CalculatorService"> <binding.ws uri= "http://localhost:8085/CalculatorServiceComponent"/> </service> <reference name="getPersonaService" target= "GetPersonaServiceComponent"/> </component> <component name="GetPersonaServiceComponent"> <implementation.java class= "com.telvent.tuscany.server.GetPersonaServiceImpl"/> </component> ... I have done another little SCA application that is connecting to Web Service and using its funcionality. It works. I mean I can access to "getPersona" method through its WebService. Problem is client application need to know Persona class. It is necessary to have a copy of "Person.java" in the new bundle. <component name="CalculatorClient"> <implementation.java class= "com.telvent.tuscany.server.CalculatorClient"/> <reference name="calculatorService"> <binding.ws uri= "http://localhost:8085/CalculatorServiceComponent"/> </reference> </component> But I want to connect to the Web service using a little client application that is not SCA. I mean it haven´t developed using Tuscany. I followed this Steps. * I ran SCA CalculatorService. * I stored generated WSDL . * I am trying generate client code using WSDL2Java but I obtain this error --> org.apache.axis2.SchemaCompiler findClassName. Type persona missing! When I run this client (with this autogenerated code) I can acess to methods that return primitive types values (int, double... add method for example). But the getPersona method that return a complex type Person is not working. I have seen that autogenerated code does not contain code for recovering of age, name, height attributes. What can I do? Thanks in advance Un saludo. Santiago Miguel Aranda Rojas Telvent Interactiva Extension: 35999 -- Vincent Zurczak EBM WebSourcing +33 (0) 4 38 12 16 77