Hi alebu, Are you using axis2/Java 1.3.0 for the WSDL2C tool. If so please try again with the Axis2/Java nightly build, http://people.apache.org/dist/axis2/nightly
Thanks Dimuthu On Fri, Apr 18, 2008 at 3:57 PM, alebu <[EMAIL PROTECTED]> wrote: > Hi, I am trying to use WSDL2C utility to create stab for my web-service, but > at this moment can't undersand whats wrong: > Code generator works incorrectly or my provided WSDL is wrong in some way. > In general, when I created very simple web-service which gets and returns > string from http://www.w3.org/2001/XMLSchema NS > then everything works almost fine. The little problem occurs in testing. I > am using SoapUI application for testing WS and when I give my WSDL to it > ( the same I use to generate WS stabs and skeleton with WSDL2C). So, SoapUI > wraps body data with WS operation name and WS in this case > cant parse data correctly. I removed operation tag and everything worked > fine. But it is only in simple cases where primitive types are used, > real problems occurs when I am trying to use complex types. WSDL looks like: > > <wsdl:definitions targetNamespace="http://example.com/myws" > xmlns:tns="http://example.com/myws" > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > > <wsdl:types> > <schema targetNamespace="http://example.com/myws" > xmlns="http://www.w3.org/2001/XMLSchema"> > <complexType name="field_type"> > <sequence> > <element name="type" type="xsd:string"/> > <element name="name" type="xsd:string"/> > <element name="value" type="xsd:string"/> > </sequence> > </complexType> > <complexType name="serve_req_type"> > <sequence> > <element name="param" type="tns:field_type"/> > </sequence> > </complexType> > <complexType name="serve_resp_type"> > <sequence> > <element name="param" type="xsd:string"/> > </sequence> > </complexType> > </schema> > </wsdl:types> > > > <wsdl:message name="serve_req_msg"> > <wsdl:part name="value" type="tns:serve_req_type"/> > </wsdl:message> > > <wsdl:message name="serve_resp_msg"> > <wsdl:part name="value" type="tns:serve_resp_type"/> > </wsdl:message> > > <wsdl:portType name="myws_port"> > <wsdl:operation name="serve"> > <wsdl:input message="tns:serve_req_msg" name="serve_req" /> > <wsdl:output message="tns:serve_resp_msg" name="serve_resp" /> > </wsdl:operation> > </wsdl:portType> > > <wsdl:binding name="myws_binding" type="tns:myws_port"> > <soap:binding style="rpc" > transport="http://schemas.xmlsoap.org/soap/http"/> > > <wsdl:operation name="serve"> > <soap:operation soapAction="http://example.com/myws/serve"/> > <wsdl:input> > <soap:body namespace="http://example.com/myws" > use="literal"/> > </wsdl:input> > <wsdl:output> > <soap:body namespace="http://example.com/myws" > use="literal"/> > </wsdl:output> > </wsdl:operation> > > </wsdl:binding> > > <wsdl:service name="myws"> > <wsdl:port binding="tns:myws_binding" name="myws_port"> > <soap:address > location="http://localhost:9090/axis2/services/myws"/> > </wsdl:port> > </wsdl:service> > </wsdl:definitions> > > for generating code i use command line like: > ${AXIS2C_HOME}/bin/WSDL2C.sh -o ${CODE_DST_DIR} -wv 1.1 -l c -ss -sd -f -t > -ssi -or -uri ${WSDL_FILE} > > In generated axis2_skel_myws.c file I modified axis2_skel_myws_serve > function to inform about what happening > like this: > > adb_serveResponse_t* axis2_skel_myws_serve( > const axutil_env_t *env, > adb_serve_t* serve > ){ > printf( "axis2_skel_myws_serve:start\n" ); > > if( serve == NULL ){ > printf( "axis2_skel_myws_serve: serve is NULL\n" ); > return NULL; > } > > adb_serve_req_type_t* serve_req = adb_serve_get_value( serve, env ); > > if( serve_req == NULL ){ > //ERROR! > printf( "axis2_skel_myws_serve: serve_req is NULL\n" ); > return NULL; > } > > adb_field_type_t* field = adb_serve_req_type_get_param( serve_req, env > ); > > if( field == NULL ){ > printf( "axis2_skel_myws_serve: field is NULL\n" ); > return NULL; > } > > printf( "Type is %s\n", adb_field_type_get_type( field, env )); > printf( "Name is %s\n", adb_field_type_get_name( field, env )); > printf( "Value is %s\n", adb_field_type_get_value( field, env )); > > // creating response > > adb_serve_resp_type_t* resp = adb_serve_resp_type_create( env ); > adb_serve_resp_type_set_param( resp, env, "fake response" ); > > adb_serveResponse_t* rval = adb_serveResponse_create( env ); > adb_serveResponse_set_value( rval, env, resp ); > > return rval; > } > > And then I loaded WSDL into SoapUI and it formed me test request like this: > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:myws="http://example.com/myws"> > <soapenv:Header/> > <soapenv:Body> > <value> > <param> > <type>string</type> > <name>par1</name> > <value>par1 value</value> > </param> > </value> > </soapenv:Body> > </soapenv:Envelope> > > Request to Axis looks like (SoapUI http log): > > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> "POST /axis2/services/myws > HTTP/1.1[\r][\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> "Content-Type: > text/xml;charset=UTF-8[\r][\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> "SOAPAction: > "http://example.com/myws/serve"[\r][\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> "User-Agent: Jakarta > Commons-HttpClient/3.0.1[\r][ > \n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> "Host: localhost:9090[\r][\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> "Content-Length: 377[\r][\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> "[\r][\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> "<soapenv:Envelope > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > xmlns:myws="http://example.com/myws">[\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> " <soapenv:Header/>[\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> " <soapenv:Body>[\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> " <value>[\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> " <param>[\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> " > <type>string</type>[\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> " <name>par1</name>[\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> " <value>par1 > value</value>[\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> " </param>[\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> " </value>[\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> " </soapenv:Body>[\n]" > Sun Mar 23 17:15:53 EET 2008:DEBUG:>> "</soapenv:Envelope>[\n]" > > From axis console is obvious that adb_serve_get_value returns NULL and as I > understand it is incorrect behavior. > Maybe I did something wrong, can someone catch an eye on my code and > probably help with whatever problem it is? --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
