You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-user@axis.apache.org by "Zhang, Wayne (IT)" <Wa...@morganstanley.com> on 2008/02/01 18:01:03 UTC

RE: Questions/suggestions on WSDL2C

Hi Dimuthu,

I followed your instructions and was able to build my client, so many
thanks on that.  However, my client is crashing the server now (SIGSEGV)
and as far as I can tell the request looks valid.  I have attached the
client request, the server log, my implementation of the server handler
(axis2_skel_CalculatorService.c) and gdb back trace from the core file
to this mail.  Below are my server's debug statements before the crash:


Started Simple Axis2 HTTP Server ...
in axis2_skel_CalculatorService_Arithmetic()!
num1=0.000000, num2=0.000000
exiting axis2_skel_CalculatorService_Arithmetic()...
Segmentation fault (core dumped)


As you see, num1 and num2 are parsed wrong (I expected 50.000000 and
20.000000), so it seems axis2 is having trouble deserializing the
arguments from the request message.  Please advise on how I should debug
the server.

Thanks,

Wayne


>-----Original Message-----
>From: Dimuthu Gamage [mailto:dimuthuc@gmail.com] 
>Sent: Thursday, January 31, 2008 5:44 PM
>To: Apache AXIS C User List
>Subject: Re: Questions/suggestions on WSDL2C
>
>Hi Zhang,
>Please see my inline comment to the code..
>
>On Feb 1, 2008 1:30 AM, Zhang, Wayne (IT) 
><Wa...@morganstanley.com> wrote:
>> Hi,
>>
>> Thanks to all for your quick responses.  I think a simple 
>demo client 
>> (with useful inlined comments explaining what a user should do) will 
>> fit my need.  WRT makefile generation, I understand it's hard to 
>> auto-generate one that works perfectly in  _all_ projects, but it 
>> might be helpful to create a makefile.template kind of thing 
>to set up 
>> all the basic stuff (required defines, libs, include paths, 
>libpaths, 
>> etc) and let the users add their stuff on top of it.
>>
>> Now back to the problems I encountered with the client.  (I 
>apologize 
>> for the following long copy-and-paste text, please tell me 
>the proper 
>> way if this is not recommended).  WSDL2C generates the following 
>> header code but I'm not sure what to do with each function (see my 
>> inlined
>> questions):
>>
>>
>>   /***************** function prototypes - for header file 
>> *************/
>>   /**
>>    * axis2_stub_create_CalculatorService
>>    * Create and return the stub with services populated
>>    * @param env Environment ( mandatory)
>>    * @param client_home Axis2/C home ( mandatory )
>>    * @param endpoint_uri Service endpoint uri( optional ) - if NULL 
>> default picked from WSDL used
>>    * @return Newly created stub object
>>    */
>>   axis2_stub_t*
>>   axis2_stub_create_CalculatorService(const axutil_env_t *env,
>>       axis2_char_t *client_home,
>>       axis2_char_t *endpoint_uri);
>>   // wz: I looked at the math example source and thought
>>   // this function should correspond to axis2_math_stub.c's 
>> axis2_math_stub_create_with_endpoint_uri_and_client_home()?
>
>Yea, It is exactly the same..
>>
>>   /**
>>    * axis2_stub_populate_services_for_CalculatorService
>>    * populate the svc in stub with the service and operations
>>    * @param stub The stub
>>    * @param env environment ( mandatory)
>>    */
>>   void axis2_stub_populate_services_for_CalculatorService( 
>> axis2_stub_t *stub, const axutil_env_t *env);
>>   // wz: implement it a la axis2_math_stub.c's 
>> axis2_populate_axis_service()?
>
>Yea that also do the same functionality.
>>
>>
>>   /**
>>    * axis2_stub_get_endpoint_uri_of_CalculatorService
>>    * Return the endpoint URI picked from WSDL
>>    * @param env environment ( mandatory)
>>    * @return The endpoint picked from WSDL
>>    */
>>   axis2_char_t *
>>   axis2_stub_get_endpoint_uri_of_CalculatorService(const 
>axutil_env_t 
>> *env);
>>   // wz: no question here
>>
>>
>>   /**
>>    * Auto generated function declaration
>>    * for
>> "Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"
>> operation.
>>    * @param stub The stub (axis2_stub_t)
>>    * @param env environment ( mandatory)
>>
>>    * @param _arithmetic
>>    * return
>>      adb_ArithmeticResponse_t*
>>    */
>>
>>   adb_ArithmeticResponse_t*
>>   axis2_stub_op_CalculatorService_Arithmetic( axis2_stub_t *stub, 
>> const axutil_env_t *env,
>>       adb_Arithmetic_t* _arithmetic);
>>   // wz: how should this function extract input parameters from 
>> _arithmetic and send them to the server?
>
>HI I suppose you have adb_Arithemetic.h/.c is generated with 
>you.. If not you may have missed the -u in code generation. 
>i.e. retry with WSD2C.sh -uri your.wsdl -u.
>
>Then the adb_Arithetic.h will have create function and several 
>setters and getters. You can use these functions to feed data 
>to adb_Arithematic object. The same with adb_Arithematic_Response
>
> I.e. your code will  look something like
>
>adb_Arithematic_t * ar;
>adb_Arithematic_Response_t * ares;
>
>ar = adb_Arithematic_set_someVar(ar, env, 5); //here someVar 
>should be replaced with actual fields
>
>ares = axis2_stub_op_CalculatorService_Arithmetic(stuv, env, ar);
>
>int i = adb_Arithematic_Response_get_anotherVar(ares, env);
>
>
>You can have a good idea on how to manipulate these adb object 
>from the "samples/codegen/client/calculator/test_calculator.c" 
>sample in the axis2/c pack.
>
>
>>
>>
>>   /**
>>    * Auto generated function declaration
>>    * for
>> "Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"
>> operation.
>>    * @param stub The stub
>>    * @param env environment ( mandatory)
>>
>>    * @param _arithmetic
>>    * @param user_data user data to be accessed by the callbacks
>>    * @param on_complete callback to handle on complete
>>    * @param on_error callback to handle on error
>>    */
>>
>>
>>
>>   void axis2_stub_start_op_CalculatorService_Arithmetic( 
>axis2_stub_t 
>> *stub, const axutil_env_t *env,
>>       adb_Arithmetic_t* _arithmetic,
>>       void *user_data,
>>       axis2_status_t ( AXIS2_CALL *on_complete ) (const axutil_env_t 
>> *,
>> adb_ArithmeticResponse_t* _arithmeticResponse, void *data) ,
>>       axis2_status_t ( AXIS2_CALL *on_error ) (const axutil_env_t *, 
>> int exception, void *data) );
>>   // wz: is this the asynchronous version of 
>> axis2_stub_op_CalculatorService_Arithmetic()?  What do I do 
>with data?
>
>Oops! we have missed to mention this is async in the doc comment.
>(anway it is mentioned in the corrosponding .c file). I will 
>correct that in the template.
>
>Yea this is async. The data is optional user data that can to 
>be passed to the callback..  IN the callback function 
>prototype we have the data as the argument. This will be 
>really useful to the user to just parse the context to the callback.
>
>Thanks
>Dimuthu
>
>>
>>
>> Thanks,
>>
>> Wayne Zhang
>> Morgan Stanley | Technology
>> Wayne.Zhang@morganstanley.com
>>
>>
>>
>> >-----Original Message-----
>> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
>> >Sent: Wednesday, January 30, 2008 10:29 PM
>> >To: Apache AXIS C User List
>> >Subject: Re: Questions/suggestions on WSDL2C
>> >
>> >Please see my inline comment.
>> >
>> >On Jan 31, 2008 8:07 AM, Samisa Abeysinghe <sa...@wso2.com> wrote:
>> >> Dimuthu Gamage wrote:
>> >> > Hi Zhang,
>> >> >
>> >> > Thanks for your suggestions.
>> >> >
>> >> > 1). In fact generating a demo client is a good idea. I
>> >will look in to that.
>> >> > For the time being, I'm using a ruby script to generate simple 
>> >> > demonstrations for stub and skels (it automatically
>> >generates simple
>> >> > logic with adb), if you find useful you can check it from 
>> >> > 
>http://people.apache.org/~dimuthu/leisure/23_oct/generate_demos.rb.
>> >> >
>> >>
>> >> When there are so many operations, with complex params, 
>how are we 
>> >> supposed to generate a demo client?
>> >
>> >I think what we can provide is empty functions (with empty
>> >logic) as in server side. The adb object manipulation should be 
>> >anyway done by the user. so we don't need to worry about complex 
>> >types in the demo client.. That indeed should be done by the user.
>> >
>> >BTW the ruby script I mentioned there, recursively fills the object 
>> >matching pattern in the generated code.. That works only 
>for "in-out"
>> >MEP. Anyway what we are planning to generate with WSDL2C 
>tool is not 
>> >much complicated as that.
>> >
>> >Thanks
>> >Dimuthu
>> >
>> >> >
>> >> > 2). If we are generating makefiles we may need to think about 
>> >> > both linux and windows users. And we have to decide whether to 
>> >> > use automake build system or just a simple Makefile which 
>> >> > sometime not OS independent. May be some build system 
>expert can help on this.
>> >> > Sanjaya,, Any Ideas?
>> >> >
>> >>
>> >> IMHO, automake makes things too complicated here. We can
>> >just generate
>> >> a simple Makefile tat could be used directly.
>> >>
>> >> Thanks,
>> >> Samisa...
>> >>
>> >>
>> >>
>> >> > Thanks
>> >> > Dimuthu
>> >> >
>> >> >
>> >> >
>> >> > On Jan 31, 2008 12:18 AM, Zhang, Wayne (IT) 
>> >> > <Wa...@morganstanley.com> wrote:
>> >> >
>> >> >>
>> >> >> Hi,
>> >> >>
>> >> >> I just started looking at Axis2/C two days ago and it
>> >looks pretty
>> >> >> promising.  However I hit a snag using WSDL2C, and I
>> >couldn't find
>> >> >> any solutions in the mail archive, so apologies if this
>> >has already
>> >> >> been answered before.
>> >> >>
>> >> >> I am using WSDL2C to generate a simple "calculator" client and 
>> >> >> server.  I followed the directions in your user manual
>> >> >> (http://ws.apache.org/axis2/c/docs/axis2c_manual.html#wsdl2c) 
>> >> >> and was able to generate my client stubs and server skeletons
>> >successfully.
>> >> >>
>> >> >> Implementing the server skeleton is pretty straight 
>forward -- I 
>> >> >> just added my business logic in the /* TODO ... */ field.
>> > However
>> >> >> implementing the client isn't as easy.  The user manual simply 
>> >> >> states "To do this, go through the header files generated and 
>> >> >> understand the API in line with the WSDL file that you used to 
>> >> >> generate the code."  It will be great if you can provide
>> >a step-by-step example showing which functions to implement in what 
>> >files.
>> >> >>
>> >> >> My other suggestions are:
>> >> >>
>> >> >> * Can WSDL2C generate a main() for the client that sets up the 
>> >> >> default env/options and make required axis calls such as 
>> >> >> axis2_endpoint_ref_create(),
>> >axis2_svc_client_send_receive(), etc.
>> >> >> and put
>> >> >> /* TODO */ hints to prompt users to add his business logic?
>> >> >>
>> >> >> * It will be great if WSDL2C can also generate makefiles
>> >to assist
>> >> >> compiling the server and client, as well as install the
>> >server in $AXIS_HOME/services.
>> >> >> This will ease a user's development effort quite a bit.
>> >> >>
>> >> >> Many thanks in advance,
>> >> >>
>> >> >> Wayne Zhang
>> >> >> Morgan Stanley | Technology
>> >> >> 750 Seventh Avenue, 12th Floor | New York, NY  10019
>> >> >> Phone: +1 212 762-1943
>> >> >> Wayne.Zhang@morganstanley.com
>> >> >>
>> >> >>
>> >> >>  ________________________________
>> >> >>
>> >> >>
>> >> >> NOTICE: If received in error, please destroy and notify sender.
>> >> >> Sender does not intend to waive confidentiality or privilege. 
>> >> >> Use of this email is prohibited when received in error.
>> >> >>
>> >> >>
>> >> >
>> >> >
>> >--------------------------------------------------------------------
>> >> > - To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> >> > For additional commands, e-mail: axis-c-user-help@ws.apache.org
>> >> >
>> >> >
>> >> >
>> >> >
>> >>
>> >>
>> >> 
>-------------------------------------------------------------------
>> >> -- To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> >> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>> >>
>> >>
>> >
>> 
>>---------------------------------------------------------------------
>> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> >For additional commands, e-mail: axis-c-user-help@ws.apache.org
>> >
>> >
>> --------------------------------------------------------
>>
>> NOTICE: If received in error, please destroy and notify 
>sender. Sender does not intend to waive confidentiality or 
>privilege. Use of this email is prohibited when received in error.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>>
>>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>For additional commands, e-mail: axis-c-user-help@ws.apache.org
>
>
--------------------------------------------------------

NOTICE: If received in error, please destroy and notify sender. Sender does not intend to waive confidentiality or privilege. Use of this email is prohibited when received in error.

Re: Questions/suggestions on WSDL2C

Posted by Dimuthu Gamage <di...@gmail.com>.
On Feb 2, 2008 12:37 AM, Zhang, Wayne (IT)
<Wa...@morganstanley.com> wrote:
> That's right, changing %Lf to %f gives me more meaningful printfs, and
> leads me to the real bug in my code:
>
> num1 = adb_Arithmetic_get_Num1(arithmetic, env);
> num1 = adb_Arithmetic_get_Num2(arithmetic, env);  // BUG: should be num2
>
> I'm embarrassed of making such a silly mistake.

Hm.. I also missed that. :)

I think the %lf (note the simple 'l') is the more correct one for
double, Specially when it go beyond the float limit '%f' will not
work.

Currently generated code also use just '%f', that should be corrected.

Thanks
Dimuthu


>
> I now have both the client and server working.  Thanks a lot for your
> help!
>
> Wayne
>
>
>
> >-----Original Message-----
> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
>
> >Sent: Friday, February 01, 2008 1:53 PM
> >To: Apache AXIS C User List
> >Subject: Re: Questions/suggestions on WSDL2C
> >
> > I didn't see you have attached the request envelope in the
> >early mail.. Sorry for bothering you with the early mail.
> >
> >Anyway replace the "%Lf" to "%lf" and check again.
> >
> >"%Lf" should be the reason for the memory corruption as well.
> >
> >Thanks
> >Dimuthu
> >
> >On Feb 1, 2008 11:42 PM, Zhang, Wayne (IT)
> ><Wa...@morganstanley.com> wrote:
> >> Hi Dimuthu,
> >>
> >> I added the debug printf and here is the new output:
> >>
> >> Started Simple Axis2 HTTP Server ...
> >> in axis2_svc_skel_CalculatorService_invoke(), content_node is:
> >> <n:Arithmetic
> >>
> >xmlns:n="http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"><n:
> >> Nu
> >> m1>50.000000</n:Num1><n:Num2>20.000000</n:Num2></n:Arithmetic>
> >
> >
> >
> >>
> >> in axis2_skel_CalculatorService_Arithmetic()!
> >> num1=0.000000, num2=0.000000
> >> exiting axis2_skel_CalculatorService_Arithmetic()...
> >> Segmentation fault (core dumped)
> >>
> >> It's possible that "divide-by-zero" causes the memory
> >corruption, but
> >> if
> >> num1 and num2 were deserialized correctly I won't run into
> >this problem.
> >>
> >> Thanks,
> >>
> >> Wayne Zhang
> >> Morgan Stanley | Technology
> >> 750 Seventh Avenue, 12th Floor | New York, NY  10019
> >> Phone: +1 212 762-1943
> >> Wayne.Zhang@morganstanley.com
> >>
> >>
> >> >-----Original Message-----
> >> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
> >>
> >> >Sent: Friday, February 01, 2008 12:56 PM
> >> >To: Apache AXIS C User List
> >> >Subject: Re: Questions/suggestions on WSDL2C
> >> >
> >> >Hi,
> >> >
> >> >Looking at your gdb.txt, i feel that there is a memory corruption
> >> >somewhere.. because parent_tag_closed is supposed to have value 1,
> >> >but it have some junk value. Although I m not sure one
> >reason can be
> >> >you are doing  0/0 kind of operation, That is just a guess.
> >> >
> >> >If that so, can you check whether the request message have come
> >> >correctly?. you can do that by installing tcpmon [1].  or adding
> >> >following code in the start of
> >> >axis2_svc_skel_CalculatorService_invoke
> >> >function in the axis2_svc_skel_CalculatorService.c file.
> >> >
> >> >printf("%s\n", axiom_node_to_string(content_node, env));
> >> >
> >> >
> >> >[1] http://xml.ms.com/ns/msjava/cxfutils/examples/calculator
> >> >
> >> >Thanks
> >> >Dimuthu
> >> >
> >> >On Feb 1, 2008 10:31 PM, Zhang, Wayne (IT)
> >> ><Wa...@morganstanley.com> wrote:
> >> >> Hi Dimuthu,
> >> >>
> >> >> I followed your instructions and was able to build my
> >> >client, so many
> >> >> thanks on that.  However, my client is crashing the server now
> >> >> (SIGSEGV) and as far as I can tell the request looks
> >valid.  I have
> >> >> attached the client request, the server log, my
> >> >implementation of the
> >> >> server handler
> >> >> (axis2_skel_CalculatorService.c) and gdb back trace from the
> >> >core file
> >> >> to this mail.  Below are my server's debug statements before
> >> >the crash:
> >> >>
> >> >>
> >> >> Started Simple Axis2 HTTP Server ...
> >> >> in axis2_skel_CalculatorService_Arithmetic()!
> >> >> num1=0.000000, num2=0.000000
> >> >> exiting axis2_skel_CalculatorService_Arithmetic()...
> >> >> Segmentation fault (core dumped)
> >> >>
> >> >>
> >> >> As you see, num1 and num2 are parsed wrong (I expected 50.000000
> >> >> and 20.000000), so it seems axis2 is having trouble deserializing
> >> >> the arguments from the request message.  Please advise on how I
> >> >> should debug the server.
> >> >>
> >> >> Thanks,
> >> >>
> >> >> Wayne
> >> >>
> >> >>
> >> >> >-----Original Message-----
> >> >> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
> >> >>
> >> >> >Sent: Thursday, January 31, 2008 5:44 PM
> >> >> >To: Apache AXIS C User List
> >> >> >Subject: Re: Questions/suggestions on WSDL2C
> >> >> >
> >> >> >Hi Zhang,
> >> >> >Please see my inline comment to the code..
> >> >> >
> >> >> >On Feb 1, 2008 1:30 AM, Zhang, Wayne (IT)
> >> >> ><Wa...@morganstanley.com> wrote:
> >> >> >> Hi,
> >> >> >>
> >> >> >> Thanks to all for your quick responses.  I think a simple
> >> >> >demo client
> >> >> >> (with useful inlined comments explaining what a user
> >should do)
> >> >> >> will fit my need.  WRT makefile generation, I understand
> >> >it's hard
> >> >> >> to auto-generate one that works perfectly in  _all_ projects,
> >> >> >> but it might be helpful to create a makefile.template kind of
> >> >> >> thing
> >> >> >to set up
> >> >> >> all the basic stuff (required defines, libs, include paths,
> >> >> >libpaths,
> >> >> >> etc) and let the users add their stuff on top of it.
> >> >> >>
> >> >> >> Now back to the problems I encountered with the client.  (I
> >> >> >apologize
> >> >> >> for the following long copy-and-paste text, please tell me
> >> >> >the proper
> >> >> >> way if this is not recommended).  WSDL2C generates the
> >following
> >> >> >> header code but I'm not sure what to do with each
> >> >function (see my
> >> >> >> inlined
> >> >> >> questions):
> >> >> >>
> >> >> >>
> >> >> >>   /***************** function prototypes - for header file
> >> >> >> *************/
> >> >> >>   /**
> >> >> >>    * axis2_stub_create_CalculatorService
> >> >> >>    * Create and return the stub with services populated
> >> >> >>    * @param env Environment ( mandatory)
> >> >> >>    * @param client_home Axis2/C home ( mandatory )
> >> >> >>    * @param endpoint_uri Service endpoint uri( optional )
> >> >- if NULL
> >> >> >> default picked from WSDL used
> >> >> >>    * @return Newly created stub object
> >> >> >>    */
> >> >> >>   axis2_stub_t*
> >> >> >>   axis2_stub_create_CalculatorService(const axutil_env_t *env,
> >> >> >>       axis2_char_t *client_home,
> >> >> >>       axis2_char_t *endpoint_uri);
> >> >> >>   // wz: I looked at the math example source and thought
> >> >> >>   // this function should correspond to axis2_math_stub.c's
> >> >> >> axis2_math_stub_create_with_endpoint_uri_and_client_home()?
> >> >> >
> >> >> >Yea, It is exactly the same..
> >> >> >>
> >> >> >>   /**
> >> >> >>    * axis2_stub_populate_services_for_CalculatorService
> >> >> >>    * populate the svc in stub with the service and operations
> >> >> >>    * @param stub The stub
> >> >> >>    * @param env environment ( mandatory)
> >> >> >>    */
> >> >> >>   void axis2_stub_populate_services_for_CalculatorService(
> >> >> >> axis2_stub_t *stub, const axutil_env_t *env);
> >> >> >>   // wz: implement it a la axis2_math_stub.c's
> >> >> >> axis2_populate_axis_service()?
> >> >> >
> >> >> >Yea that also do the same functionality.
> >> >> >>
> >> >> >>
> >> >> >>   /**
> >> >> >>    * axis2_stub_get_endpoint_uri_of_CalculatorService
> >> >> >>    * Return the endpoint URI picked from WSDL
> >> >> >>    * @param env environment ( mandatory)
> >> >> >>    * @return The endpoint picked from WSDL
> >> >> >>    */
> >> >> >>   axis2_char_t *
> >> >> >>   axis2_stub_get_endpoint_uri_of_CalculatorService(const
> >> >> >axutil_env_t
> >> >> >> *env);
> >> >> >>   // wz: no question here
> >> >> >>
> >> >> >>
> >> >> >>   /**
> >> >> >>    * Auto generated function declaration
> >> >> >>    * for
> >> >> >>
> >>
> >>"Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"
> >> >> >> operation.
> >> >> >>    * @param stub The stub (axis2_stub_t)
> >> >> >>    * @param env environment ( mandatory)
> >> >> >>
> >> >> >>    * @param _arithmetic
> >> >> >>    * return
> >> >> >>      adb_ArithmeticResponse_t*
> >> >> >>    */
> >> >> >>
> >> >> >>   adb_ArithmeticResponse_t*
> >> >> >>   axis2_stub_op_CalculatorService_Arithmetic( axis2_stub_t
> >> >> >> *stub, const axutil_env_t *env,
> >> >> >>       adb_Arithmetic_t* _arithmetic);
> >> >> >>   // wz: how should this function extract input
> >parameters from
> >> >> >> _arithmetic and send them to the server?
> >> >> >
> >> >> >HI I suppose you have adb_Arithemetic.h/.c is generated
> >> >with you.. If
> >> >> >not you may have missed the -u in code generation.
> >> >> >i.e. retry with WSD2C.sh -uri your.wsdl -u.
> >> >> >
> >> >> >Then the adb_Arithetic.h will have create function and several
> >> >> >setters and getters. You can use these functions to feed data to
> >> >> >adb_Arithematic object. The same with adb_Arithematic_Response
> >> >> >
> >> >> > I.e. your code will  look something like
> >> >> >
> >> >> >adb_Arithematic_t * ar;
> >> >> >adb_Arithematic_Response_t * ares;
> >> >> >
> >> >> >ar = adb_Arithematic_set_someVar(ar, env, 5); //here someVar
> >> >> >should be replaced with actual fields
> >> >> >
> >> >> >ares = axis2_stub_op_CalculatorService_Arithmetic(stuv, env, ar);
> >> >> >
> >> >> >int i = adb_Arithematic_Response_get_anotherVar(ares, env);
> >> >> >
> >> >> >
> >> >> >You can have a good idea on how to manipulate these adb object
> >> >> >from the "samples/codegen/client/calculator/test_calculator.c"
> >> >> >sample in the axis2/c pack.
> >> >> >
> >> >> >
> >> >> >>
> >> >> >>
> >> >> >>   /**
> >> >> >>    * Auto generated function declaration
> >> >> >>    * for
> >> >> >>
> >>
> >>"Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"
> >> >> >> operation.
> >> >> >>    * @param stub The stub
> >> >> >>    * @param env environment ( mandatory)
> >> >> >>
> >> >> >>    * @param _arithmetic
> >> >> >>    * @param user_data user data to be accessed by the callbacks
> >> >> >>    * @param on_complete callback to handle on complete
> >> >> >>    * @param on_error callback to handle on error
> >> >> >>    */
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >>   void axis2_stub_start_op_CalculatorService_Arithmetic(
> >> >> >axis2_stub_t
> >> >> >> *stub, const axutil_env_t *env,
> >> >> >>       adb_Arithmetic_t* _arithmetic,
> >> >> >>       void *user_data,
> >> >> >>       axis2_status_t ( AXIS2_CALL *on_complete ) (const
> >> >> >> axutil_env_t *,
> >> >> >> adb_ArithmeticResponse_t* _arithmeticResponse, void *data) ,
> >> >> >>       axis2_status_t ( AXIS2_CALL *on_error ) (const
> >> >> >> axutil_env_t *, int exception, void *data) );
> >> >> >>   // wz: is this the asynchronous version of
> >> >> >> axis2_stub_op_CalculatorService_Arithmetic()?  What do I do
> >> >> >with data?
> >> >> >
> >> >> >Oops! we have missed to mention this is async in the doc comment.
> >> >> >(anway it is mentioned in the corrosponding .c file). I
> >> >will correct
> >> >> >that in the template.
> >> >> >
> >> >> >Yea this is async. The data is optional user data that can to be
> >> >> >passed to the callback..  IN the callback function
> >> >prototype we have
> >> >> >the data as the argument. This will be really useful to the user
> >> >> >to just parse the context to the callback.
> >> >> >
> >> >> >Thanks
> >> >> >Dimuthu
> >> >> >
> >> >> >>
> >> >> >>
> >> >> >> Thanks,
> >> >> >>
> >> >> >> Wayne Zhang
> >> >> >> Morgan Stanley | Technology
> >> >> >> Wayne.Zhang@morganstanley.com
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> >-----Original Message-----
> >> >> >> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
> >> >> >> >Sent: Wednesday, January 30, 2008 10:29 PM
> >> >> >> >To: Apache AXIS C User List
> >> >> >> >Subject: Re: Questions/suggestions on WSDL2C
> >> >> >> >
> >> >> >> >Please see my inline comment.
> >> >> >> >
> >> >> >> >On Jan 31, 2008 8:07 AM, Samisa Abeysinghe
> >> ><sa...@wso2.com> wrote:
> >> >> >> >> Dimuthu Gamage wrote:
> >> >> >> >> > Hi Zhang,
> >> >> >> >> >
> >> >> >> >> > Thanks for your suggestions.
> >> >> >> >> >
> >> >> >> >> > 1). In fact generating a demo client is a good idea. I
> >> >> >> >will look in to that.
> >> >> >> >> > For the time being, I'm using a ruby script to
> >> >generate simple
> >> >> >> >> > demonstrations for stub and skels (it automatically
> >> >> >> >generates simple
> >> >> >> >> > logic with adb), if you find useful you can check it from
> >> >> >> >> >
> >> >>
> >>http://people.apache.org/~dimuthu/leisure/23_oct/generate_demos.rb.
> >> >> >> >> >
> >> >> >> >>
> >> >> >> >> When there are so many operations, with complex params,
> >> >> >how are we
> >> >> >> >> supposed to generate a demo client?
> >> >> >> >
> >> >> >> >I think what we can provide is empty functions (with empty
> >> >> >> >logic) as in server side. The adb object manipulation
> >should be
> >> >> >> >anyway done by the user. so we don't need to worry about
> >> >> >> >complex types in the demo client.. That indeed should be done
> >> >> >> >by
> >> >the user.
> >> >> >> >
> >> >> >> >BTW the ruby script I mentioned there, recursively fills the
> >> >> >> >object matching pattern in the generated code.. That
> >works only
> >> >> >for "in-out"
> >> >> >> >MEP. Anyway what we are planning to generate with WSDL2C
> >> >> >tool is not
> >> >> >> >much complicated as that.
> >> >> >> >
> >> >> >> >Thanks
> >> >> >> >Dimuthu
> >> >> >> >
> >> >> >> >> >
> >> >> >> >> > 2). If we are generating makefiles we may need to
> >> >think about
> >> >> >> >> > both linux and windows users. And we have to decide
> >> >whether to
> >> >> >> >> > use automake build system or just a simple Makefile which
> >> >> >> >> > sometime not OS independent. May be some build system
> >> >> >expert can help on this.
> >> >> >> >> > Sanjaya,, Any Ideas?
> >> >> >> >> >
> >> >> >> >>
> >> >> >> >> IMHO, automake makes things too complicated here. We can
> >> >> >> >just generate
> >> >> >> >> a simple Makefile tat could be used directly.
> >> >> >> >>
> >> >> >> >> Thanks,
> >> >> >> >> Samisa...
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> > Thanks
> >> >> >> >> > Dimuthu
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >> > On Jan 31, 2008 12:18 AM, Zhang, Wayne (IT)
> >> >> >> >> > <Wa...@morganstanley.com> wrote:
> >> >> >> >> >
> >> >> >> >> >>
> >> >> >> >> >> Hi,
> >> >> >> >> >>
> >> >> >> >> >> I just started looking at Axis2/C two days ago and it
> >> >> >> >looks pretty
> >> >> >> >> >> promising.  However I hit a snag using WSDL2C, and I
> >> >> >> >couldn't find
> >> >> >> >> >> any solutions in the mail archive, so apologies if this
> >> >> >> >has already
> >> >> >> >> >> been answered before.
> >> >> >> >> >>
> >> >> >> >> >> I am using WSDL2C to generate a simple
> >"calculator" client
> >> >> >> >> >> and server.  I followed the directions in your
> >user manual
> >> >> >> >> >>
> >> >(http://ws.apache.org/axis2/c/docs/axis2c_manual.html#wsdl2c)
> >> >> >> >> >> and was able to generate my client stubs and server
> >> >skeletons
> >> >> >> >successfully.
> >> >> >> >> >>
> >> >> >> >> >> Implementing the server skeleton is pretty straight
> >> >> >forward -- I
> >> >> >> >> >> just added my business logic in the /* TODO ... */ field.
> >> >> >> > However
> >> >> >> >> >> implementing the client isn't as easy.  The user manual
> >> >> >> >> >> simply states "To do this, go through the header files
> >> >> >> >> >> generated and understand the API in line with the WSDL
> >> >> >> >> >> file that you used to generate the code."  It will be
> >> >great if you
> >> >> >> >> >> can provide
> >> >> >> >a step-by-step example showing which functions to
> >implement in
> >> >> >> >what files.
> >> >> >> >> >>
> >> >> >> >> >> My other suggestions are:
> >> >> >> >> >>
> >> >> >> >> >> * Can WSDL2C generate a main() for the client
> >that sets up
> >> >> >> >> >> the default env/options and make required axis
> >> >calls such as
> >> >> >> >> >> axis2_endpoint_ref_create(),
> >> >> >> >axis2_svc_client_send_receive(), etc.
> >> >> >> >> >> and put
> >> >> >> >> >> /* TODO */ hints to prompt users to add his
> >business logic?
> >> >> >> >> >>
> >> >> >> >> >> * It will be great if WSDL2C can also generate makefiles
> >> >> >> >to assist
> >> >> >> >> >> compiling the server and client, as well as install the
> >> >> >> >server in $AXIS_HOME/services.
> >> >> >> >> >> This will ease a user's development effort quite a bit.
> >> >> >> >> >>
> >> >> >> >> >> Many thanks in advance,
> >> >> >> >> >>
> >> >> >> >> >> Wayne Zhang
> >> >> >> >> >> Morgan Stanley | Technology 750 Seventh Avenue,
> >12th Floor
> >> >> >> >> >> | New York, NY  10019
> >> >> >> >> >> Phone: +1 212 762-1943
> >> >> >> >> >> Wayne.Zhang@morganstanley.com
> >> >> >> >> >>
> >> >> >> >> >>
> >> >> >> >> >>  ________________________________
> >> >> >> >> >>
> >> >> >> >> >>
> >> >> >> >> >> NOTICE: If received in error, please destroy and
> >> >notify sender.
> >> >> >> >> >> Sender does not intend to waive confidentiality or
> >> >privilege.
> >> >> >> >> >> Use of this email is prohibited when received in error.
> >> >> >> >> >>
> >> >> >> >> >>
> >> >> >> >> >
> >> >> >> >> >
> >> >> >>
> >> >>------------------------------------------------------------------
> >> >> >> >--
> >> >> >> >> > - To unsubscribe, e-mail:
> >> >> >> >> > axis-c-user-unsubscribe@ws.apache.org
> >> >> >> >> > For additional commands, e-mail:
> >> >> >> >> > axis-c-user-help@ws.apache.org
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >>
> >>------------------------------------------------------------------
> >> >> >-
> >> >> >> >> -- To unsubscribe, e-mail:
> >> >axis-c-user-unsubscribe@ws.apache.org
> >> >> >> >> For additional commands, e-mail:
> >> >> >> >> axis-c-user-help@ws.apache.org
> >> >> >> >>
> >> >> >> >>
> >> >> >> >
> >> >> >>
> >> >>
> >>
> >>>>-------------------------------------------------------------------
> >> >>>-
> >> >> >>-
> >> >> >> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >> >> >> >For additional commands, e-mail:
> >axis-c-user-help@ws.apache.org
> >> >> >> >
> >> >> >> >
> >> >> >> --------------------------------------------------------
> >> >> >>
> >> >> >> NOTICE: If received in error, please destroy and notify
> >> >> >sender. Sender does not intend to waive confidentiality or
> >> >privilege.
> >> >> >Use of this email is prohibited when received in error.
> >> >> >>
> >> >> >>
> >> >-------------------------------------------------------------------
> >> >> >> -- To unsubscribe, e-mail:
> >axis-c-user-unsubscribe@ws.apache.org
> >> >> >> For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >> >> >>
> >> >> >>
> >> >> >
> >> >>
> >>
> >>>--------------------------------------------------------------------
> >> >>-
> >> >> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >> >> >For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >> >> >
> >> >> >
> >> >> --------------------------------------------------------
> >> >>
> >> >> NOTICE: If received in error, please destroy and notify
> >> >sender. Sender does not intend to waive confidentiality or
> >privilege.
> >> >Use of this email is prohibited when received in error.
> >> >>
> >> >>
> >-------------------------------------------------------------------
> >> >> -- To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >> >> For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >> >>
> >> >
> >>
> >>---------------------------------------------------------------------
> >> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >> >For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >> >
> >> >
> >> --------------------------------------------------------
> >>
> >> NOTICE: If received in error, please destroy and notify
> >sender. Sender does not intend to waive confidentiality or
> >privilege. Use of this email is prohibited when received in error.
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >> For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >>
> >>
> >
> >---------------------------------------------------------------------
>
> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >
> >
> --------------------------------------------------------
>
> NOTICE: If received in error, please destroy and notify sender. Sender does not intend to waive confidentiality or privilege. Use of this email is prohibited when received in error.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-user-help@ws.apache.org


RE: Questions/suggestions on WSDL2C

Posted by "Zhang, Wayne (IT)" <Wa...@morganstanley.com>.
That's right, changing %Lf to %f gives me more meaningful printfs, and
leads me to the real bug in my code:

num1 = adb_Arithmetic_get_Num1(arithmetic, env);
num1 = adb_Arithmetic_get_Num2(arithmetic, env);  // BUG: should be num2

I'm embarrassed of making such a silly mistake.

I now have both the client and server working.  Thanks a lot for your
help!

Wayne

 

>-----Original Message-----
>From: Dimuthu Gamage [mailto:dimuthuc@gmail.com] 
>Sent: Friday, February 01, 2008 1:53 PM
>To: Apache AXIS C User List
>Subject: Re: Questions/suggestions on WSDL2C
>
> I didn't see you have attached the request envelope in the 
>early mail.. Sorry for bothering you with the early mail.
>
>Anyway replace the "%Lf" to "%lf" and check again.
>
>"%Lf" should be the reason for the memory corruption as well.
>
>Thanks
>Dimuthu
>
>On Feb 1, 2008 11:42 PM, Zhang, Wayne (IT) 
><Wa...@morganstanley.com> wrote:
>> Hi Dimuthu,
>>
>> I added the debug printf and here is the new output:
>>
>> Started Simple Axis2 HTTP Server ...
>> in axis2_svc_skel_CalculatorService_invoke(), content_node is:
>> <n:Arithmetic
>> 
>xmlns:n="http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"><n:
>> Nu
>> m1>50.000000</n:Num1><n:Num2>20.000000</n:Num2></n:Arithmetic>
>
>
>
>>
>> in axis2_skel_CalculatorService_Arithmetic()!
>> num1=0.000000, num2=0.000000
>> exiting axis2_skel_CalculatorService_Arithmetic()...
>> Segmentation fault (core dumped)
>>
>> It's possible that "divide-by-zero" causes the memory 
>corruption, but 
>> if
>> num1 and num2 were deserialized correctly I won't run into 
>this problem.
>>
>> Thanks,
>>
>> Wayne Zhang
>> Morgan Stanley | Technology
>> 750 Seventh Avenue, 12th Floor | New York, NY  10019
>> Phone: +1 212 762-1943
>> Wayne.Zhang@morganstanley.com
>>
>>
>> >-----Original Message-----
>> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
>>
>> >Sent: Friday, February 01, 2008 12:56 PM
>> >To: Apache AXIS C User List
>> >Subject: Re: Questions/suggestions on WSDL2C
>> >
>> >Hi,
>> >
>> >Looking at your gdb.txt, i feel that there is a memory corruption 
>> >somewhere.. because parent_tag_closed is supposed to have value 1, 
>> >but it have some junk value. Although I m not sure one 
>reason can be 
>> >you are doing  0/0 kind of operation, That is just a guess.
>> >
>> >If that so, can you check whether the request message have come 
>> >correctly?. you can do that by installing tcpmon [1].  or adding 
>> >following code in the start of 
>> >axis2_svc_skel_CalculatorService_invoke
>> >function in the axis2_svc_skel_CalculatorService.c file.
>> >
>> >printf("%s\n", axiom_node_to_string(content_node, env));
>> >
>> >
>> >[1] http://xml.ms.com/ns/msjava/cxfutils/examples/calculator
>> >
>> >Thanks
>> >Dimuthu
>> >
>> >On Feb 1, 2008 10:31 PM, Zhang, Wayne (IT) 
>> ><Wa...@morganstanley.com> wrote:
>> >> Hi Dimuthu,
>> >>
>> >> I followed your instructions and was able to build my
>> >client, so many
>> >> thanks on that.  However, my client is crashing the server now
>> >> (SIGSEGV) and as far as I can tell the request looks 
>valid.  I have 
>> >> attached the client request, the server log, my
>> >implementation of the
>> >> server handler
>> >> (axis2_skel_CalculatorService.c) and gdb back trace from the
>> >core file
>> >> to this mail.  Below are my server's debug statements before
>> >the crash:
>> >>
>> >>
>> >> Started Simple Axis2 HTTP Server ...
>> >> in axis2_skel_CalculatorService_Arithmetic()!
>> >> num1=0.000000, num2=0.000000
>> >> exiting axis2_skel_CalculatorService_Arithmetic()...
>> >> Segmentation fault (core dumped)
>> >>
>> >>
>> >> As you see, num1 and num2 are parsed wrong (I expected 50.000000 
>> >> and 20.000000), so it seems axis2 is having trouble deserializing 
>> >> the arguments from the request message.  Please advise on how I 
>> >> should debug the server.
>> >>
>> >> Thanks,
>> >>
>> >> Wayne
>> >>
>> >>
>> >> >-----Original Message-----
>> >> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
>> >>
>> >> >Sent: Thursday, January 31, 2008 5:44 PM
>> >> >To: Apache AXIS C User List
>> >> >Subject: Re: Questions/suggestions on WSDL2C
>> >> >
>> >> >Hi Zhang,
>> >> >Please see my inline comment to the code..
>> >> >
>> >> >On Feb 1, 2008 1:30 AM, Zhang, Wayne (IT) 
>> >> ><Wa...@morganstanley.com> wrote:
>> >> >> Hi,
>> >> >>
>> >> >> Thanks to all for your quick responses.  I think a simple
>> >> >demo client
>> >> >> (with useful inlined comments explaining what a user 
>should do) 
>> >> >> will fit my need.  WRT makefile generation, I understand
>> >it's hard
>> >> >> to auto-generate one that works perfectly in  _all_ projects, 
>> >> >> but it might be helpful to create a makefile.template kind of 
>> >> >> thing
>> >> >to set up
>> >> >> all the basic stuff (required defines, libs, include paths,
>> >> >libpaths,
>> >> >> etc) and let the users add their stuff on top of it.
>> >> >>
>> >> >> Now back to the problems I encountered with the client.  (I
>> >> >apologize
>> >> >> for the following long copy-and-paste text, please tell me
>> >> >the proper
>> >> >> way if this is not recommended).  WSDL2C generates the 
>following 
>> >> >> header code but I'm not sure what to do with each
>> >function (see my
>> >> >> inlined
>> >> >> questions):
>> >> >>
>> >> >>
>> >> >>   /***************** function prototypes - for header file 
>> >> >> *************/
>> >> >>   /**
>> >> >>    * axis2_stub_create_CalculatorService
>> >> >>    * Create and return the stub with services populated
>> >> >>    * @param env Environment ( mandatory)
>> >> >>    * @param client_home Axis2/C home ( mandatory )
>> >> >>    * @param endpoint_uri Service endpoint uri( optional )
>> >- if NULL
>> >> >> default picked from WSDL used
>> >> >>    * @return Newly created stub object
>> >> >>    */
>> >> >>   axis2_stub_t*
>> >> >>   axis2_stub_create_CalculatorService(const axutil_env_t *env,
>> >> >>       axis2_char_t *client_home,
>> >> >>       axis2_char_t *endpoint_uri);
>> >> >>   // wz: I looked at the math example source and thought
>> >> >>   // this function should correspond to axis2_math_stub.c's 
>> >> >> axis2_math_stub_create_with_endpoint_uri_and_client_home()?
>> >> >
>> >> >Yea, It is exactly the same..
>> >> >>
>> >> >>   /**
>> >> >>    * axis2_stub_populate_services_for_CalculatorService
>> >> >>    * populate the svc in stub with the service and operations
>> >> >>    * @param stub The stub
>> >> >>    * @param env environment ( mandatory)
>> >> >>    */
>> >> >>   void axis2_stub_populate_services_for_CalculatorService(
>> >> >> axis2_stub_t *stub, const axutil_env_t *env);
>> >> >>   // wz: implement it a la axis2_math_stub.c's 
>> >> >> axis2_populate_axis_service()?
>> >> >
>> >> >Yea that also do the same functionality.
>> >> >>
>> >> >>
>> >> >>   /**
>> >> >>    * axis2_stub_get_endpoint_uri_of_CalculatorService
>> >> >>    * Return the endpoint URI picked from WSDL
>> >> >>    * @param env environment ( mandatory)
>> >> >>    * @return The endpoint picked from WSDL
>> >> >>    */
>> >> >>   axis2_char_t *
>> >> >>   axis2_stub_get_endpoint_uri_of_CalculatorService(const
>> >> >axutil_env_t
>> >> >> *env);
>> >> >>   // wz: no question here
>> >> >>
>> >> >>
>> >> >>   /**
>> >> >>    * Auto generated function declaration
>> >> >>    * for
>> >> >>
>> 
>>"Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"
>> >> >> operation.
>> >> >>    * @param stub The stub (axis2_stub_t)
>> >> >>    * @param env environment ( mandatory)
>> >> >>
>> >> >>    * @param _arithmetic
>> >> >>    * return
>> >> >>      adb_ArithmeticResponse_t*
>> >> >>    */
>> >> >>
>> >> >>   adb_ArithmeticResponse_t*
>> >> >>   axis2_stub_op_CalculatorService_Arithmetic( axis2_stub_t 
>> >> >> *stub, const axutil_env_t *env,
>> >> >>       adb_Arithmetic_t* _arithmetic);
>> >> >>   // wz: how should this function extract input 
>parameters from 
>> >> >> _arithmetic and send them to the server?
>> >> >
>> >> >HI I suppose you have adb_Arithemetic.h/.c is generated
>> >with you.. If
>> >> >not you may have missed the -u in code generation.
>> >> >i.e. retry with WSD2C.sh -uri your.wsdl -u.
>> >> >
>> >> >Then the adb_Arithetic.h will have create function and several 
>> >> >setters and getters. You can use these functions to feed data to 
>> >> >adb_Arithematic object. The same with adb_Arithematic_Response
>> >> >
>> >> > I.e. your code will  look something like
>> >> >
>> >> >adb_Arithematic_t * ar;
>> >> >adb_Arithematic_Response_t * ares;
>> >> >
>> >> >ar = adb_Arithematic_set_someVar(ar, env, 5); //here someVar 
>> >> >should be replaced with actual fields
>> >> >
>> >> >ares = axis2_stub_op_CalculatorService_Arithmetic(stuv, env, ar);
>> >> >
>> >> >int i = adb_Arithematic_Response_get_anotherVar(ares, env);
>> >> >
>> >> >
>> >> >You can have a good idea on how to manipulate these adb object 
>> >> >from the "samples/codegen/client/calculator/test_calculator.c"
>> >> >sample in the axis2/c pack.
>> >> >
>> >> >
>> >> >>
>> >> >>
>> >> >>   /**
>> >> >>    * Auto generated function declaration
>> >> >>    * for
>> >> >>
>> 
>>"Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"
>> >> >> operation.
>> >> >>    * @param stub The stub
>> >> >>    * @param env environment ( mandatory)
>> >> >>
>> >> >>    * @param _arithmetic
>> >> >>    * @param user_data user data to be accessed by the callbacks
>> >> >>    * @param on_complete callback to handle on complete
>> >> >>    * @param on_error callback to handle on error
>> >> >>    */
>> >> >>
>> >> >>
>> >> >>
>> >> >>   void axis2_stub_start_op_CalculatorService_Arithmetic(
>> >> >axis2_stub_t
>> >> >> *stub, const axutil_env_t *env,
>> >> >>       adb_Arithmetic_t* _arithmetic,
>> >> >>       void *user_data,
>> >> >>       axis2_status_t ( AXIS2_CALL *on_complete ) (const 
>> >> >> axutil_env_t *,
>> >> >> adb_ArithmeticResponse_t* _arithmeticResponse, void *data) ,
>> >> >>       axis2_status_t ( AXIS2_CALL *on_error ) (const 
>> >> >> axutil_env_t *, int exception, void *data) );
>> >> >>   // wz: is this the asynchronous version of 
>> >> >> axis2_stub_op_CalculatorService_Arithmetic()?  What do I do
>> >> >with data?
>> >> >
>> >> >Oops! we have missed to mention this is async in the doc comment.
>> >> >(anway it is mentioned in the corrosponding .c file). I
>> >will correct
>> >> >that in the template.
>> >> >
>> >> >Yea this is async. The data is optional user data that can to be 
>> >> >passed to the callback..  IN the callback function
>> >prototype we have
>> >> >the data as the argument. This will be really useful to the user 
>> >> >to just parse the context to the callback.
>> >> >
>> >> >Thanks
>> >> >Dimuthu
>> >> >
>> >> >>
>> >> >>
>> >> >> Thanks,
>> >> >>
>> >> >> Wayne Zhang
>> >> >> Morgan Stanley | Technology
>> >> >> Wayne.Zhang@morganstanley.com
>> >> >>
>> >> >>
>> >> >>
>> >> >> >-----Original Message-----
>> >> >> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
>> >> >> >Sent: Wednesday, January 30, 2008 10:29 PM
>> >> >> >To: Apache AXIS C User List
>> >> >> >Subject: Re: Questions/suggestions on WSDL2C
>> >> >> >
>> >> >> >Please see my inline comment.
>> >> >> >
>> >> >> >On Jan 31, 2008 8:07 AM, Samisa Abeysinghe
>> ><sa...@wso2.com> wrote:
>> >> >> >> Dimuthu Gamage wrote:
>> >> >> >> > Hi Zhang,
>> >> >> >> >
>> >> >> >> > Thanks for your suggestions.
>> >> >> >> >
>> >> >> >> > 1). In fact generating a demo client is a good idea. I
>> >> >> >will look in to that.
>> >> >> >> > For the time being, I'm using a ruby script to
>> >generate simple
>> >> >> >> > demonstrations for stub and skels (it automatically
>> >> >> >generates simple
>> >> >> >> > logic with adb), if you find useful you can check it from
>> >> >> >> >
>> >> 
>>http://people.apache.org/~dimuthu/leisure/23_oct/generate_demos.rb.
>> >> >> >> >
>> >> >> >>
>> >> >> >> When there are so many operations, with complex params,
>> >> >how are we
>> >> >> >> supposed to generate a demo client?
>> >> >> >
>> >> >> >I think what we can provide is empty functions (with empty
>> >> >> >logic) as in server side. The adb object manipulation 
>should be 
>> >> >> >anyway done by the user. so we don't need to worry about 
>> >> >> >complex types in the demo client.. That indeed should be done 
>> >> >> >by
>> >the user.
>> >> >> >
>> >> >> >BTW the ruby script I mentioned there, recursively fills the 
>> >> >> >object matching pattern in the generated code.. That 
>works only
>> >> >for "in-out"
>> >> >> >MEP. Anyway what we are planning to generate with WSDL2C
>> >> >tool is not
>> >> >> >much complicated as that.
>> >> >> >
>> >> >> >Thanks
>> >> >> >Dimuthu
>> >> >> >
>> >> >> >> >
>> >> >> >> > 2). If we are generating makefiles we may need to
>> >think about
>> >> >> >> > both linux and windows users. And we have to decide
>> >whether to
>> >> >> >> > use automake build system or just a simple Makefile which 
>> >> >> >> > sometime not OS independent. May be some build system
>> >> >expert can help on this.
>> >> >> >> > Sanjaya,, Any Ideas?
>> >> >> >> >
>> >> >> >>
>> >> >> >> IMHO, automake makes things too complicated here. We can
>> >> >> >just generate
>> >> >> >> a simple Makefile tat could be used directly.
>> >> >> >>
>> >> >> >> Thanks,
>> >> >> >> Samisa...
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >> > Thanks
>> >> >> >> > Dimuthu
>> >> >> >> >
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > On Jan 31, 2008 12:18 AM, Zhang, Wayne (IT) 
>> >> >> >> > <Wa...@morganstanley.com> wrote:
>> >> >> >> >
>> >> >> >> >>
>> >> >> >> >> Hi,
>> >> >> >> >>
>> >> >> >> >> I just started looking at Axis2/C two days ago and it
>> >> >> >looks pretty
>> >> >> >> >> promising.  However I hit a snag using WSDL2C, and I
>> >> >> >couldn't find
>> >> >> >> >> any solutions in the mail archive, so apologies if this
>> >> >> >has already
>> >> >> >> >> been answered before.
>> >> >> >> >>
>> >> >> >> >> I am using WSDL2C to generate a simple 
>"calculator" client 
>> >> >> >> >> and server.  I followed the directions in your 
>user manual
>> >> >> >> >>
>> >(http://ws.apache.org/axis2/c/docs/axis2c_manual.html#wsdl2c)
>> >> >> >> >> and was able to generate my client stubs and server
>> >skeletons
>> >> >> >successfully.
>> >> >> >> >>
>> >> >> >> >> Implementing the server skeleton is pretty straight
>> >> >forward -- I
>> >> >> >> >> just added my business logic in the /* TODO ... */ field.
>> >> >> > However
>> >> >> >> >> implementing the client isn't as easy.  The user manual 
>> >> >> >> >> simply states "To do this, go through the header files 
>> >> >> >> >> generated and understand the API in line with the WSDL 
>> >> >> >> >> file that you used to generate the code."  It will be
>> >great if you
>> >> >> >> >> can provide
>> >> >> >a step-by-step example showing which functions to 
>implement in 
>> >> >> >what files.
>> >> >> >> >>
>> >> >> >> >> My other suggestions are:
>> >> >> >> >>
>> >> >> >> >> * Can WSDL2C generate a main() for the client 
>that sets up 
>> >> >> >> >> the default env/options and make required axis
>> >calls such as
>> >> >> >> >> axis2_endpoint_ref_create(),
>> >> >> >axis2_svc_client_send_receive(), etc.
>> >> >> >> >> and put
>> >> >> >> >> /* TODO */ hints to prompt users to add his 
>business logic?
>> >> >> >> >>
>> >> >> >> >> * It will be great if WSDL2C can also generate makefiles
>> >> >> >to assist
>> >> >> >> >> compiling the server and client, as well as install the
>> >> >> >server in $AXIS_HOME/services.
>> >> >> >> >> This will ease a user's development effort quite a bit.
>> >> >> >> >>
>> >> >> >> >> Many thanks in advance,
>> >> >> >> >>
>> >> >> >> >> Wayne Zhang
>> >> >> >> >> Morgan Stanley | Technology 750 Seventh Avenue, 
>12th Floor 
>> >> >> >> >> | New York, NY  10019
>> >> >> >> >> Phone: +1 212 762-1943
>> >> >> >> >> Wayne.Zhang@morganstanley.com
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >>  ________________________________
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> NOTICE: If received in error, please destroy and
>> >notify sender.
>> >> >> >> >> Sender does not intend to waive confidentiality or
>> >privilege.
>> >> >> >> >> Use of this email is prohibited when received in error.
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >
>> >> >> >> >
>> >> >>
>> >>------------------------------------------------------------------
>> >> >> >--
>> >> >> >> > - To unsubscribe, e-mail:
>> >> >> >> > axis-c-user-unsubscribe@ws.apache.org
>> >> >> >> > For additional commands, e-mail:
>> >> >> >> > axis-c-user-help@ws.apache.org
>> >> >> >> >
>> >> >> >> >
>> >> >> >> >
>> >> >> >> >
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> 
>>------------------------------------------------------------------
>> >> >-
>> >> >> >> -- To unsubscribe, e-mail:
>> >axis-c-user-unsubscribe@ws.apache.org
>> >> >> >> For additional commands, e-mail: 
>> >> >> >> axis-c-user-help@ws.apache.org
>> >> >> >>
>> >> >> >>
>> >> >> >
>> >> >>
>> >>
>> 
>>>>-------------------------------------------------------------------
>> >>>-
>> >> >>-
>> >> >> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> >> >> >For additional commands, e-mail: 
>axis-c-user-help@ws.apache.org
>> >> >> >
>> >> >> >
>> >> >> --------------------------------------------------------
>> >> >>
>> >> >> NOTICE: If received in error, please destroy and notify
>> >> >sender. Sender does not intend to waive confidentiality or
>> >privilege.
>> >> >Use of this email is prohibited when received in error.
>> >> >>
>> >> >>
>> >-------------------------------------------------------------------
>> >> >> -- To unsubscribe, e-mail: 
>axis-c-user-unsubscribe@ws.apache.org
>> >> >> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>> >> >>
>> >> >>
>> >> >
>> >>
>> 
>>>--------------------------------------------------------------------
>> >>-
>> >> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> >> >For additional commands, e-mail: axis-c-user-help@ws.apache.org
>> >> >
>> >> >
>> >> --------------------------------------------------------
>> >>
>> >> NOTICE: If received in error, please destroy and notify
>> >sender. Sender does not intend to waive confidentiality or 
>privilege. 
>> >Use of this email is prohibited when received in error.
>> >>
>> >> 
>-------------------------------------------------------------------
>> >> -- To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> >> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>> >>
>> >
>> 
>>---------------------------------------------------------------------
>> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> >For additional commands, e-mail: axis-c-user-help@ws.apache.org
>> >
>> >
>> --------------------------------------------------------
>>
>> NOTICE: If received in error, please destroy and notify 
>sender. Sender does not intend to waive confidentiality or 
>privilege. Use of this email is prohibited when received in error.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>>
>>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>For additional commands, e-mail: axis-c-user-help@ws.apache.org
>
>
--------------------------------------------------------

NOTICE: If received in error, please destroy and notify sender. Sender does not intend to waive confidentiality or privilege. Use of this email is prohibited when received in error.

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-user-help@ws.apache.org


Re: Questions/suggestions on WSDL2C

Posted by Dimuthu Gamage <di...@gmail.com>.
 I didn't see you have attached the request envelope in the early
mail.. Sorry for bothering you with the early mail.

Anyway replace the "%Lf" to "%lf" and check again.

"%Lf" should be the reason for the memory corruption as well.

Thanks
Dimuthu

On Feb 1, 2008 11:42 PM, Zhang, Wayne (IT)
<Wa...@morganstanley.com> wrote:
> Hi Dimuthu,
>
> I added the debug printf and here is the new output:
>
> Started Simple Axis2 HTTP Server ...
> in axis2_svc_skel_CalculatorService_invoke(), content_node is:
> <n:Arithmetic
> xmlns:n="http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"><n:Nu
> m1>50.000000</n:Num1><n:Num2>20.000000</n:Num2></n:Arithmetic>



>
> in axis2_skel_CalculatorService_Arithmetic()!
> num1=0.000000, num2=0.000000
> exiting axis2_skel_CalculatorService_Arithmetic()...
> Segmentation fault (core dumped)
>
> It's possible that "divide-by-zero" causes the memory corruption, but if
> num1 and num2 were deserialized correctly I won't run into this problem.
>
> Thanks,
>
> Wayne Zhang
> Morgan Stanley | Technology
> 750 Seventh Avenue, 12th Floor | New York, NY  10019
> Phone: +1 212 762-1943
> Wayne.Zhang@morganstanley.com
>
>
> >-----Original Message-----
> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
>
> >Sent: Friday, February 01, 2008 12:56 PM
> >To: Apache AXIS C User List
> >Subject: Re: Questions/suggestions on WSDL2C
> >
> >Hi,
> >
> >Looking at your gdb.txt, i feel that there is a memory
> >corruption somewhere.. because parent_tag_closed is supposed
> >to have value 1, but it have some junk value. Although I m not
> >sure one reason can be you are doing  0/0 kind of operation,
> >That is just a guess.
> >
> >If that so, can you check whether the request message have
> >come correctly?. you can do that by installing tcpmon [1].  or
> >adding following code in the start of
> >axis2_svc_skel_CalculatorService_invoke
> >function in the axis2_svc_skel_CalculatorService.c file.
> >
> >printf("%s\n", axiom_node_to_string(content_node, env));
> >
> >
> >[1] http://xml.ms.com/ns/msjava/cxfutils/examples/calculator
> >
> >Thanks
> >Dimuthu
> >
> >On Feb 1, 2008 10:31 PM, Zhang, Wayne (IT)
> ><Wa...@morganstanley.com> wrote:
> >> Hi Dimuthu,
> >>
> >> I followed your instructions and was able to build my
> >client, so many
> >> thanks on that.  However, my client is crashing the server now
> >> (SIGSEGV) and as far as I can tell the request looks valid.  I have
> >> attached the client request, the server log, my
> >implementation of the
> >> server handler
> >> (axis2_skel_CalculatorService.c) and gdb back trace from the
> >core file
> >> to this mail.  Below are my server's debug statements before
> >the crash:
> >>
> >>
> >> Started Simple Axis2 HTTP Server ...
> >> in axis2_skel_CalculatorService_Arithmetic()!
> >> num1=0.000000, num2=0.000000
> >> exiting axis2_skel_CalculatorService_Arithmetic()...
> >> Segmentation fault (core dumped)
> >>
> >>
> >> As you see, num1 and num2 are parsed wrong (I expected 50.000000 and
> >> 20.000000), so it seems axis2 is having trouble deserializing the
> >> arguments from the request message.  Please advise on how I should
> >> debug the server.
> >>
> >> Thanks,
> >>
> >> Wayne
> >>
> >>
> >> >-----Original Message-----
> >> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
> >>
> >> >Sent: Thursday, January 31, 2008 5:44 PM
> >> >To: Apache AXIS C User List
> >> >Subject: Re: Questions/suggestions on WSDL2C
> >> >
> >> >Hi Zhang,
> >> >Please see my inline comment to the code..
> >> >
> >> >On Feb 1, 2008 1:30 AM, Zhang, Wayne (IT)
> >> ><Wa...@morganstanley.com> wrote:
> >> >> Hi,
> >> >>
> >> >> Thanks to all for your quick responses.  I think a simple
> >> >demo client
> >> >> (with useful inlined comments explaining what a user should do)
> >> >> will fit my need.  WRT makefile generation, I understand
> >it's hard
> >> >> to auto-generate one that works perfectly in  _all_ projects, but
> >> >> it might be helpful to create a makefile.template kind of thing
> >> >to set up
> >> >> all the basic stuff (required defines, libs, include paths,
> >> >libpaths,
> >> >> etc) and let the users add their stuff on top of it.
> >> >>
> >> >> Now back to the problems I encountered with the client.  (I
> >> >apologize
> >> >> for the following long copy-and-paste text, please tell me
> >> >the proper
> >> >> way if this is not recommended).  WSDL2C generates the following
> >> >> header code but I'm not sure what to do with each
> >function (see my
> >> >> inlined
> >> >> questions):
> >> >>
> >> >>
> >> >>   /***************** function prototypes - for header file
> >> >> *************/
> >> >>   /**
> >> >>    * axis2_stub_create_CalculatorService
> >> >>    * Create and return the stub with services populated
> >> >>    * @param env Environment ( mandatory)
> >> >>    * @param client_home Axis2/C home ( mandatory )
> >> >>    * @param endpoint_uri Service endpoint uri( optional )
> >- if NULL
> >> >> default picked from WSDL used
> >> >>    * @return Newly created stub object
> >> >>    */
> >> >>   axis2_stub_t*
> >> >>   axis2_stub_create_CalculatorService(const axutil_env_t *env,
> >> >>       axis2_char_t *client_home,
> >> >>       axis2_char_t *endpoint_uri);
> >> >>   // wz: I looked at the math example source and thought
> >> >>   // this function should correspond to axis2_math_stub.c's
> >> >> axis2_math_stub_create_with_endpoint_uri_and_client_home()?
> >> >
> >> >Yea, It is exactly the same..
> >> >>
> >> >>   /**
> >> >>    * axis2_stub_populate_services_for_CalculatorService
> >> >>    * populate the svc in stub with the service and operations
> >> >>    * @param stub The stub
> >> >>    * @param env environment ( mandatory)
> >> >>    */
> >> >>   void axis2_stub_populate_services_for_CalculatorService(
> >> >> axis2_stub_t *stub, const axutil_env_t *env);
> >> >>   // wz: implement it a la axis2_math_stub.c's
> >> >> axis2_populate_axis_service()?
> >> >
> >> >Yea that also do the same functionality.
> >> >>
> >> >>
> >> >>   /**
> >> >>    * axis2_stub_get_endpoint_uri_of_CalculatorService
> >> >>    * Return the endpoint URI picked from WSDL
> >> >>    * @param env environment ( mandatory)
> >> >>    * @return The endpoint picked from WSDL
> >> >>    */
> >> >>   axis2_char_t *
> >> >>   axis2_stub_get_endpoint_uri_of_CalculatorService(const
> >> >axutil_env_t
> >> >> *env);
> >> >>   // wz: no question here
> >> >>
> >> >>
> >> >>   /**
> >> >>    * Auto generated function declaration
> >> >>    * for
> >> >>
> >"Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"
> >> >> operation.
> >> >>    * @param stub The stub (axis2_stub_t)
> >> >>    * @param env environment ( mandatory)
> >> >>
> >> >>    * @param _arithmetic
> >> >>    * return
> >> >>      adb_ArithmeticResponse_t*
> >> >>    */
> >> >>
> >> >>   adb_ArithmeticResponse_t*
> >> >>   axis2_stub_op_CalculatorService_Arithmetic( axis2_stub_t *stub,
> >> >> const axutil_env_t *env,
> >> >>       adb_Arithmetic_t* _arithmetic);
> >> >>   // wz: how should this function extract input parameters from
> >> >> _arithmetic and send them to the server?
> >> >
> >> >HI I suppose you have adb_Arithemetic.h/.c is generated
> >with you.. If
> >> >not you may have missed the -u in code generation.
> >> >i.e. retry with WSD2C.sh -uri your.wsdl -u.
> >> >
> >> >Then the adb_Arithetic.h will have create function and several
> >> >setters and getters. You can use these functions to feed data to
> >> >adb_Arithematic object. The same with adb_Arithematic_Response
> >> >
> >> > I.e. your code will  look something like
> >> >
> >> >adb_Arithematic_t * ar;
> >> >adb_Arithematic_Response_t * ares;
> >> >
> >> >ar = adb_Arithematic_set_someVar(ar, env, 5); //here someVar should
> >> >be replaced with actual fields
> >> >
> >> >ares = axis2_stub_op_CalculatorService_Arithmetic(stuv, env, ar);
> >> >
> >> >int i = adb_Arithematic_Response_get_anotherVar(ares, env);
> >> >
> >> >
> >> >You can have a good idea on how to manipulate these adb object from
> >> >the "samples/codegen/client/calculator/test_calculator.c"
> >> >sample in the axis2/c pack.
> >> >
> >> >
> >> >>
> >> >>
> >> >>   /**
> >> >>    * Auto generated function declaration
> >> >>    * for
> >> >>
> >"Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"
> >> >> operation.
> >> >>    * @param stub The stub
> >> >>    * @param env environment ( mandatory)
> >> >>
> >> >>    * @param _arithmetic
> >> >>    * @param user_data user data to be accessed by the callbacks
> >> >>    * @param on_complete callback to handle on complete
> >> >>    * @param on_error callback to handle on error
> >> >>    */
> >> >>
> >> >>
> >> >>
> >> >>   void axis2_stub_start_op_CalculatorService_Arithmetic(
> >> >axis2_stub_t
> >> >> *stub, const axutil_env_t *env,
> >> >>       adb_Arithmetic_t* _arithmetic,
> >> >>       void *user_data,
> >> >>       axis2_status_t ( AXIS2_CALL *on_complete ) (const
> >> >> axutil_env_t *,
> >> >> adb_ArithmeticResponse_t* _arithmeticResponse, void *data) ,
> >> >>       axis2_status_t ( AXIS2_CALL *on_error ) (const axutil_env_t
> >> >> *, int exception, void *data) );
> >> >>   // wz: is this the asynchronous version of
> >> >> axis2_stub_op_CalculatorService_Arithmetic()?  What do I do
> >> >with data?
> >> >
> >> >Oops! we have missed to mention this is async in the doc comment.
> >> >(anway it is mentioned in the corrosponding .c file). I
> >will correct
> >> >that in the template.
> >> >
> >> >Yea this is async. The data is optional user data that can to be
> >> >passed to the callback..  IN the callback function
> >prototype we have
> >> >the data as the argument. This will be really useful to the user to
> >> >just parse the context to the callback.
> >> >
> >> >Thanks
> >> >Dimuthu
> >> >
> >> >>
> >> >>
> >> >> Thanks,
> >> >>
> >> >> Wayne Zhang
> >> >> Morgan Stanley | Technology
> >> >> Wayne.Zhang@morganstanley.com
> >> >>
> >> >>
> >> >>
> >> >> >-----Original Message-----
> >> >> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
> >> >> >Sent: Wednesday, January 30, 2008 10:29 PM
> >> >> >To: Apache AXIS C User List
> >> >> >Subject: Re: Questions/suggestions on WSDL2C
> >> >> >
> >> >> >Please see my inline comment.
> >> >> >
> >> >> >On Jan 31, 2008 8:07 AM, Samisa Abeysinghe
> ><sa...@wso2.com> wrote:
> >> >> >> Dimuthu Gamage wrote:
> >> >> >> > Hi Zhang,
> >> >> >> >
> >> >> >> > Thanks for your suggestions.
> >> >> >> >
> >> >> >> > 1). In fact generating a demo client is a good idea. I
> >> >> >will look in to that.
> >> >> >> > For the time being, I'm using a ruby script to
> >generate simple
> >> >> >> > demonstrations for stub and skels (it automatically
> >> >> >generates simple
> >> >> >> > logic with adb), if you find useful you can check it from
> >> >> >> >
> >> >http://people.apache.org/~dimuthu/leisure/23_oct/generate_demos.rb.
> >> >> >> >
> >> >> >>
> >> >> >> When there are so many operations, with complex params,
> >> >how are we
> >> >> >> supposed to generate a demo client?
> >> >> >
> >> >> >I think what we can provide is empty functions (with empty
> >> >> >logic) as in server side. The adb object manipulation should be
> >> >> >anyway done by the user. so we don't need to worry about complex
> >> >> >types in the demo client.. That indeed should be done by
> >the user.
> >> >> >
> >> >> >BTW the ruby script I mentioned there, recursively fills the
> >> >> >object matching pattern in the generated code.. That works only
> >> >for "in-out"
> >> >> >MEP. Anyway what we are planning to generate with WSDL2C
> >> >tool is not
> >> >> >much complicated as that.
> >> >> >
> >> >> >Thanks
> >> >> >Dimuthu
> >> >> >
> >> >> >> >
> >> >> >> > 2). If we are generating makefiles we may need to
> >think about
> >> >> >> > both linux and windows users. And we have to decide
> >whether to
> >> >> >> > use automake build system or just a simple Makefile which
> >> >> >> > sometime not OS independent. May be some build system
> >> >expert can help on this.
> >> >> >> > Sanjaya,, Any Ideas?
> >> >> >> >
> >> >> >>
> >> >> >> IMHO, automake makes things too complicated here. We can
> >> >> >just generate
> >> >> >> a simple Makefile tat could be used directly.
> >> >> >>
> >> >> >> Thanks,
> >> >> >> Samisa...
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> > Thanks
> >> >> >> > Dimuthu
> >> >> >> >
> >> >> >> >
> >> >> >> >
> >> >> >> > On Jan 31, 2008 12:18 AM, Zhang, Wayne (IT)
> >> >> >> > <Wa...@morganstanley.com> wrote:
> >> >> >> >
> >> >> >> >>
> >> >> >> >> Hi,
> >> >> >> >>
> >> >> >> >> I just started looking at Axis2/C two days ago and it
> >> >> >looks pretty
> >> >> >> >> promising.  However I hit a snag using WSDL2C, and I
> >> >> >couldn't find
> >> >> >> >> any solutions in the mail archive, so apologies if this
> >> >> >has already
> >> >> >> >> been answered before.
> >> >> >> >>
> >> >> >> >> I am using WSDL2C to generate a simple "calculator" client
> >> >> >> >> and server.  I followed the directions in your user manual
> >> >> >> >>
> >(http://ws.apache.org/axis2/c/docs/axis2c_manual.html#wsdl2c)
> >> >> >> >> and was able to generate my client stubs and server
> >skeletons
> >> >> >successfully.
> >> >> >> >>
> >> >> >> >> Implementing the server skeleton is pretty straight
> >> >forward -- I
> >> >> >> >> just added my business logic in the /* TODO ... */ field.
> >> >> > However
> >> >> >> >> implementing the client isn't as easy.  The user manual
> >> >> >> >> simply states "To do this, go through the header files
> >> >> >> >> generated and understand the API in line with the WSDL file
> >> >> >> >> that you used to generate the code."  It will be
> >great if you
> >> >> >> >> can provide
> >> >> >a step-by-step example showing which functions to implement in
> >> >> >what files.
> >> >> >> >>
> >> >> >> >> My other suggestions are:
> >> >> >> >>
> >> >> >> >> * Can WSDL2C generate a main() for the client that sets up
> >> >> >> >> the default env/options and make required axis
> >calls such as
> >> >> >> >> axis2_endpoint_ref_create(),
> >> >> >axis2_svc_client_send_receive(), etc.
> >> >> >> >> and put
> >> >> >> >> /* TODO */ hints to prompt users to add his business logic?
> >> >> >> >>
> >> >> >> >> * It will be great if WSDL2C can also generate makefiles
> >> >> >to assist
> >> >> >> >> compiling the server and client, as well as install the
> >> >> >server in $AXIS_HOME/services.
> >> >> >> >> This will ease a user's development effort quite a bit.
> >> >> >> >>
> >> >> >> >> Many thanks in advance,
> >> >> >> >>
> >> >> >> >> Wayne Zhang
> >> >> >> >> Morgan Stanley | Technology
> >> >> >> >> 750 Seventh Avenue, 12th Floor | New York, NY  10019
> >> >> >> >> Phone: +1 212 762-1943
> >> >> >> >> Wayne.Zhang@morganstanley.com
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>  ________________________________
> >> >> >> >>
> >> >> >> >>
> >> >> >> >> NOTICE: If received in error, please destroy and
> >notify sender.
> >> >> >> >> Sender does not intend to waive confidentiality or
> >privilege.
> >> >> >> >> Use of this email is prohibited when received in error.
> >> >> >> >>
> >> >> >> >>
> >> >> >> >
> >> >> >> >
> >> >>
> >>------------------------------------------------------------------
> >> >> >--
> >> >> >> > - To unsubscribe, e-mail:
> >> >> >> > axis-c-user-unsubscribe@ws.apache.org
> >> >> >> > For additional commands, e-mail:
> >> >> >> > axis-c-user-help@ws.apache.org
> >> >> >> >
> >> >> >> >
> >> >> >> >
> >> >> >> >
> >> >> >>
> >> >> >>
> >> >> >>
> >> >-------------------------------------------------------------------
> >> >> >> -- To unsubscribe, e-mail:
> >axis-c-user-unsubscribe@ws.apache.org
> >> >> >> For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >> >> >>
> >> >> >>
> >> >> >
> >> >>
> >>
> >>>--------------------------------------------------------------------
> >> >>-
> >> >> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >> >> >For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >> >> >
> >> >> >
> >> >> --------------------------------------------------------
> >> >>
> >> >> NOTICE: If received in error, please destroy and notify
> >> >sender. Sender does not intend to waive confidentiality or
> >privilege.
> >> >Use of this email is prohibited when received in error.
> >> >>
> >> >>
> >-------------------------------------------------------------------
> >> >> -- To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >> >> For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >> >>
> >> >>
> >> >
> >>
> >>---------------------------------------------------------------------
> >> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >> >For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >> >
> >> >
> >> --------------------------------------------------------
> >>
> >> NOTICE: If received in error, please destroy and notify
> >sender. Sender does not intend to waive confidentiality or
> >privilege. Use of this email is prohibited when received in error.
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >> For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >>
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >
> >
> --------------------------------------------------------
>
> NOTICE: If received in error, please destroy and notify sender. Sender does not intend to waive confidentiality or privilege. Use of this email is prohibited when received in error.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-user-help@ws.apache.org


RE: Questions/suggestions on WSDL2C

Posted by "Zhang, Wayne (IT)" <Wa...@morganstanley.com>.
Hi Dimuthu,

I added the debug printf and here is the new output:

Started Simple Axis2 HTTP Server ...
in axis2_svc_skel_CalculatorService_invoke(), content_node is:
<n:Arithmetic
xmlns:n="http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"><n:Nu
m1>50.000000</n:Num1><n:Num2>20.000000</n:Num2></n:Arithmetic>

in axis2_skel_CalculatorService_Arithmetic()!
num1=0.000000, num2=0.000000
exiting axis2_skel_CalculatorService_Arithmetic()...
Segmentation fault (core dumped)

It's possible that "divide-by-zero" causes the memory corruption, but if
num1 and num2 were deserialized correctly I won't run into this problem.

Thanks,

Wayne Zhang
Morgan Stanley | Technology
750 Seventh Avenue, 12th Floor | New York, NY  10019
Phone: +1 212 762-1943
Wayne.Zhang@morganstanley.com
 

>-----Original Message-----
>From: Dimuthu Gamage [mailto:dimuthuc@gmail.com] 
>Sent: Friday, February 01, 2008 12:56 PM
>To: Apache AXIS C User List
>Subject: Re: Questions/suggestions on WSDL2C
>
>Hi,
>
>Looking at your gdb.txt, i feel that there is a memory 
>corruption somewhere.. because parent_tag_closed is supposed 
>to have value 1, but it have some junk value. Although I m not 
>sure one reason can be you are doing  0/0 kind of operation, 
>That is just a guess.
>
>If that so, can you check whether the request message have 
>come correctly?. you can do that by installing tcpmon [1].  or 
>adding following code in the start of 
>axis2_svc_skel_CalculatorService_invoke
>function in the axis2_svc_skel_CalculatorService.c file.
>
>printf("%s\n", axiom_node_to_string(content_node, env));
>
>
>[1] http://xml.ms.com/ns/msjava/cxfutils/examples/calculator
>
>Thanks
>Dimuthu
>
>On Feb 1, 2008 10:31 PM, Zhang, Wayne (IT) 
><Wa...@morganstanley.com> wrote:
>> Hi Dimuthu,
>>
>> I followed your instructions and was able to build my 
>client, so many 
>> thanks on that.  However, my client is crashing the server now 
>> (SIGSEGV) and as far as I can tell the request looks valid.  I have 
>> attached the client request, the server log, my 
>implementation of the 
>> server handler
>> (axis2_skel_CalculatorService.c) and gdb back trace from the 
>core file 
>> to this mail.  Below are my server's debug statements before 
>the crash:
>>
>>
>> Started Simple Axis2 HTTP Server ...
>> in axis2_skel_CalculatorService_Arithmetic()!
>> num1=0.000000, num2=0.000000
>> exiting axis2_skel_CalculatorService_Arithmetic()...
>> Segmentation fault (core dumped)
>>
>>
>> As you see, num1 and num2 are parsed wrong (I expected 50.000000 and 
>> 20.000000), so it seems axis2 is having trouble deserializing the 
>> arguments from the request message.  Please advise on how I should 
>> debug the server.
>>
>> Thanks,
>>
>> Wayne
>>
>>
>> >-----Original Message-----
>> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
>>
>> >Sent: Thursday, January 31, 2008 5:44 PM
>> >To: Apache AXIS C User List
>> >Subject: Re: Questions/suggestions on WSDL2C
>> >
>> >Hi Zhang,
>> >Please see my inline comment to the code..
>> >
>> >On Feb 1, 2008 1:30 AM, Zhang, Wayne (IT) 
>> ><Wa...@morganstanley.com> wrote:
>> >> Hi,
>> >>
>> >> Thanks to all for your quick responses.  I think a simple
>> >demo client
>> >> (with useful inlined comments explaining what a user should do) 
>> >> will fit my need.  WRT makefile generation, I understand 
>it's hard 
>> >> to auto-generate one that works perfectly in  _all_ projects, but 
>> >> it might be helpful to create a makefile.template kind of thing
>> >to set up
>> >> all the basic stuff (required defines, libs, include paths,
>> >libpaths,
>> >> etc) and let the users add their stuff on top of it.
>> >>
>> >> Now back to the problems I encountered with the client.  (I
>> >apologize
>> >> for the following long copy-and-paste text, please tell me
>> >the proper
>> >> way if this is not recommended).  WSDL2C generates the following 
>> >> header code but I'm not sure what to do with each 
>function (see my 
>> >> inlined
>> >> questions):
>> >>
>> >>
>> >>   /***************** function prototypes - for header file 
>> >> *************/
>> >>   /**
>> >>    * axis2_stub_create_CalculatorService
>> >>    * Create and return the stub with services populated
>> >>    * @param env Environment ( mandatory)
>> >>    * @param client_home Axis2/C home ( mandatory )
>> >>    * @param endpoint_uri Service endpoint uri( optional ) 
>- if NULL 
>> >> default picked from WSDL used
>> >>    * @return Newly created stub object
>> >>    */
>> >>   axis2_stub_t*
>> >>   axis2_stub_create_CalculatorService(const axutil_env_t *env,
>> >>       axis2_char_t *client_home,
>> >>       axis2_char_t *endpoint_uri);
>> >>   // wz: I looked at the math example source and thought
>> >>   // this function should correspond to axis2_math_stub.c's 
>> >> axis2_math_stub_create_with_endpoint_uri_and_client_home()?
>> >
>> >Yea, It is exactly the same..
>> >>
>> >>   /**
>> >>    * axis2_stub_populate_services_for_CalculatorService
>> >>    * populate the svc in stub with the service and operations
>> >>    * @param stub The stub
>> >>    * @param env environment ( mandatory)
>> >>    */
>> >>   void axis2_stub_populate_services_for_CalculatorService(
>> >> axis2_stub_t *stub, const axutil_env_t *env);
>> >>   // wz: implement it a la axis2_math_stub.c's 
>> >> axis2_populate_axis_service()?
>> >
>> >Yea that also do the same functionality.
>> >>
>> >>
>> >>   /**
>> >>    * axis2_stub_get_endpoint_uri_of_CalculatorService
>> >>    * Return the endpoint URI picked from WSDL
>> >>    * @param env environment ( mandatory)
>> >>    * @return The endpoint picked from WSDL
>> >>    */
>> >>   axis2_char_t *
>> >>   axis2_stub_get_endpoint_uri_of_CalculatorService(const
>> >axutil_env_t
>> >> *env);
>> >>   // wz: no question here
>> >>
>> >>
>> >>   /**
>> >>    * Auto generated function declaration
>> >>    * for
>> >> 
>"Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"
>> >> operation.
>> >>    * @param stub The stub (axis2_stub_t)
>> >>    * @param env environment ( mandatory)
>> >>
>> >>    * @param _arithmetic
>> >>    * return
>> >>      adb_ArithmeticResponse_t*
>> >>    */
>> >>
>> >>   adb_ArithmeticResponse_t*
>> >>   axis2_stub_op_CalculatorService_Arithmetic( axis2_stub_t *stub, 
>> >> const axutil_env_t *env,
>> >>       adb_Arithmetic_t* _arithmetic);
>> >>   // wz: how should this function extract input parameters from 
>> >> _arithmetic and send them to the server?
>> >
>> >HI I suppose you have adb_Arithemetic.h/.c is generated 
>with you.. If 
>> >not you may have missed the -u in code generation.
>> >i.e. retry with WSD2C.sh -uri your.wsdl -u.
>> >
>> >Then the adb_Arithetic.h will have create function and several 
>> >setters and getters. You can use these functions to feed data to 
>> >adb_Arithematic object. The same with adb_Arithematic_Response
>> >
>> > I.e. your code will  look something like
>> >
>> >adb_Arithematic_t * ar;
>> >adb_Arithematic_Response_t * ares;
>> >
>> >ar = adb_Arithematic_set_someVar(ar, env, 5); //here someVar should 
>> >be replaced with actual fields
>> >
>> >ares = axis2_stub_op_CalculatorService_Arithmetic(stuv, env, ar);
>> >
>> >int i = adb_Arithematic_Response_get_anotherVar(ares, env);
>> >
>> >
>> >You can have a good idea on how to manipulate these adb object from 
>> >the "samples/codegen/client/calculator/test_calculator.c"
>> >sample in the axis2/c pack.
>> >
>> >
>> >>
>> >>
>> >>   /**
>> >>    * Auto generated function declaration
>> >>    * for
>> >> 
>"Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"
>> >> operation.
>> >>    * @param stub The stub
>> >>    * @param env environment ( mandatory)
>> >>
>> >>    * @param _arithmetic
>> >>    * @param user_data user data to be accessed by the callbacks
>> >>    * @param on_complete callback to handle on complete
>> >>    * @param on_error callback to handle on error
>> >>    */
>> >>
>> >>
>> >>
>> >>   void axis2_stub_start_op_CalculatorService_Arithmetic(
>> >axis2_stub_t
>> >> *stub, const axutil_env_t *env,
>> >>       adb_Arithmetic_t* _arithmetic,
>> >>       void *user_data,
>> >>       axis2_status_t ( AXIS2_CALL *on_complete ) (const 
>> >> axutil_env_t *,
>> >> adb_ArithmeticResponse_t* _arithmeticResponse, void *data) ,
>> >>       axis2_status_t ( AXIS2_CALL *on_error ) (const axutil_env_t 
>> >> *, int exception, void *data) );
>> >>   // wz: is this the asynchronous version of 
>> >> axis2_stub_op_CalculatorService_Arithmetic()?  What do I do
>> >with data?
>> >
>> >Oops! we have missed to mention this is async in the doc comment.
>> >(anway it is mentioned in the corrosponding .c file). I 
>will correct 
>> >that in the template.
>> >
>> >Yea this is async. The data is optional user data that can to be 
>> >passed to the callback..  IN the callback function 
>prototype we have 
>> >the data as the argument. This will be really useful to the user to 
>> >just parse the context to the callback.
>> >
>> >Thanks
>> >Dimuthu
>> >
>> >>
>> >>
>> >> Thanks,
>> >>
>> >> Wayne Zhang
>> >> Morgan Stanley | Technology
>> >> Wayne.Zhang@morganstanley.com
>> >>
>> >>
>> >>
>> >> >-----Original Message-----
>> >> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
>> >> >Sent: Wednesday, January 30, 2008 10:29 PM
>> >> >To: Apache AXIS C User List
>> >> >Subject: Re: Questions/suggestions on WSDL2C
>> >> >
>> >> >Please see my inline comment.
>> >> >
>> >> >On Jan 31, 2008 8:07 AM, Samisa Abeysinghe 
><sa...@wso2.com> wrote:
>> >> >> Dimuthu Gamage wrote:
>> >> >> > Hi Zhang,
>> >> >> >
>> >> >> > Thanks for your suggestions.
>> >> >> >
>> >> >> > 1). In fact generating a demo client is a good idea. I
>> >> >will look in to that.
>> >> >> > For the time being, I'm using a ruby script to 
>generate simple 
>> >> >> > demonstrations for stub and skels (it automatically
>> >> >generates simple
>> >> >> > logic with adb), if you find useful you can check it from
>> >> >> >
>> >http://people.apache.org/~dimuthu/leisure/23_oct/generate_demos.rb.
>> >> >> >
>> >> >>
>> >> >> When there are so many operations, with complex params,
>> >how are we
>> >> >> supposed to generate a demo client?
>> >> >
>> >> >I think what we can provide is empty functions (with empty
>> >> >logic) as in server side. The adb object manipulation should be 
>> >> >anyway done by the user. so we don't need to worry about complex 
>> >> >types in the demo client.. That indeed should be done by 
>the user.
>> >> >
>> >> >BTW the ruby script I mentioned there, recursively fills the 
>> >> >object matching pattern in the generated code.. That works only
>> >for "in-out"
>> >> >MEP. Anyway what we are planning to generate with WSDL2C
>> >tool is not
>> >> >much complicated as that.
>> >> >
>> >> >Thanks
>> >> >Dimuthu
>> >> >
>> >> >> >
>> >> >> > 2). If we are generating makefiles we may need to 
>think about 
>> >> >> > both linux and windows users. And we have to decide 
>whether to 
>> >> >> > use automake build system or just a simple Makefile which 
>> >> >> > sometime not OS independent. May be some build system
>> >expert can help on this.
>> >> >> > Sanjaya,, Any Ideas?
>> >> >> >
>> >> >>
>> >> >> IMHO, automake makes things too complicated here. We can
>> >> >just generate
>> >> >> a simple Makefile tat could be used directly.
>> >> >>
>> >> >> Thanks,
>> >> >> Samisa...
>> >> >>
>> >> >>
>> >> >>
>> >> >> > Thanks
>> >> >> > Dimuthu
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > On Jan 31, 2008 12:18 AM, Zhang, Wayne (IT) 
>> >> >> > <Wa...@morganstanley.com> wrote:
>> >> >> >
>> >> >> >>
>> >> >> >> Hi,
>> >> >> >>
>> >> >> >> I just started looking at Axis2/C two days ago and it
>> >> >looks pretty
>> >> >> >> promising.  However I hit a snag using WSDL2C, and I
>> >> >couldn't find
>> >> >> >> any solutions in the mail archive, so apologies if this
>> >> >has already
>> >> >> >> been answered before.
>> >> >> >>
>> >> >> >> I am using WSDL2C to generate a simple "calculator" client 
>> >> >> >> and server.  I followed the directions in your user manual
>> >> >> >> 
>(http://ws.apache.org/axis2/c/docs/axis2c_manual.html#wsdl2c)
>> >> >> >> and was able to generate my client stubs and server 
>skeletons
>> >> >successfully.
>> >> >> >>
>> >> >> >> Implementing the server skeleton is pretty straight
>> >forward -- I
>> >> >> >> just added my business logic in the /* TODO ... */ field.
>> >> > However
>> >> >> >> implementing the client isn't as easy.  The user manual 
>> >> >> >> simply states "To do this, go through the header files 
>> >> >> >> generated and understand the API in line with the WSDL file 
>> >> >> >> that you used to generate the code."  It will be 
>great if you 
>> >> >> >> can provide
>> >> >a step-by-step example showing which functions to implement in 
>> >> >what files.
>> >> >> >>
>> >> >> >> My other suggestions are:
>> >> >> >>
>> >> >> >> * Can WSDL2C generate a main() for the client that sets up 
>> >> >> >> the default env/options and make required axis 
>calls such as 
>> >> >> >> axis2_endpoint_ref_create(),
>> >> >axis2_svc_client_send_receive(), etc.
>> >> >> >> and put
>> >> >> >> /* TODO */ hints to prompt users to add his business logic?
>> >> >> >>
>> >> >> >> * It will be great if WSDL2C can also generate makefiles
>> >> >to assist
>> >> >> >> compiling the server and client, as well as install the
>> >> >server in $AXIS_HOME/services.
>> >> >> >> This will ease a user's development effort quite a bit.
>> >> >> >>
>> >> >> >> Many thanks in advance,
>> >> >> >>
>> >> >> >> Wayne Zhang
>> >> >> >> Morgan Stanley | Technology
>> >> >> >> 750 Seventh Avenue, 12th Floor | New York, NY  10019
>> >> >> >> Phone: +1 212 762-1943
>> >> >> >> Wayne.Zhang@morganstanley.com
>> >> >> >>
>> >> >> >>
>> >> >> >>  ________________________________
>> >> >> >>
>> >> >> >>
>> >> >> >> NOTICE: If received in error, please destroy and 
>notify sender.
>> >> >> >> Sender does not intend to waive confidentiality or 
>privilege.
>> >> >> >> Use of this email is prohibited when received in error.
>> >> >> >>
>> >> >> >>
>> >> >> >
>> >> >> >
>> >> 
>>------------------------------------------------------------------
>> >> >--
>> >> >> > - To unsubscribe, e-mail: 
>> >> >> > axis-c-user-unsubscribe@ws.apache.org
>> >> >> > For additional commands, e-mail: 
>> >> >> > axis-c-user-help@ws.apache.org
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >>
>> >> >>
>> >> >>
>> >-------------------------------------------------------------------
>> >> >> -- To unsubscribe, e-mail: 
>axis-c-user-unsubscribe@ws.apache.org
>> >> >> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>> >> >>
>> >> >>
>> >> >
>> >>
>> 
>>>--------------------------------------------------------------------
>> >>-
>> >> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> >> >For additional commands, e-mail: axis-c-user-help@ws.apache.org
>> >> >
>> >> >
>> >> --------------------------------------------------------
>> >>
>> >> NOTICE: If received in error, please destroy and notify
>> >sender. Sender does not intend to waive confidentiality or 
>privilege. 
>> >Use of this email is prohibited when received in error.
>> >>
>> >> 
>-------------------------------------------------------------------
>> >> -- To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> >> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>> >>
>> >>
>> >
>> 
>>---------------------------------------------------------------------
>> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> >For additional commands, e-mail: axis-c-user-help@ws.apache.org
>> >
>> >
>> --------------------------------------------------------
>>
>> NOTICE: If received in error, please destroy and notify 
>sender. Sender does not intend to waive confidentiality or 
>privilege. Use of this email is prohibited when received in error.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>For additional commands, e-mail: axis-c-user-help@ws.apache.org
>
>
--------------------------------------------------------

NOTICE: If received in error, please destroy and notify sender. Sender does not intend to waive confidentiality or privilege. Use of this email is prohibited when received in error.

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-user-help@ws.apache.org


Re: Questions/suggestions on WSDL2C

Posted by Dimuthu Gamage <di...@gmail.com>.
Hi,

Looking at your gdb.txt, i feel that there is a memory corruption
somewhere.. because parent_tag_closed is supposed to have value 1, but
it have some junk value. Although I m not sure one reason can be you
are doing  0/0 kind of operation, That is just a guess.

If that so, can you check whether the request message have come
correctly?. you can do that by installing tcpmon [1].  or adding
following code in the start of axis2_svc_skel_CalculatorService_invoke
function in the axis2_svc_skel_CalculatorService.c file.

printf("%s\n", axiom_node_to_string(content_node, env));


[1] http://xml.ms.com/ns/msjava/cxfutils/examples/calculator

Thanks
Dimuthu

On Feb 1, 2008 10:31 PM, Zhang, Wayne (IT)
<Wa...@morganstanley.com> wrote:
> Hi Dimuthu,
>
> I followed your instructions and was able to build my client, so many
> thanks on that.  However, my client is crashing the server now (SIGSEGV)
> and as far as I can tell the request looks valid.  I have attached the
> client request, the server log, my implementation of the server handler
> (axis2_skel_CalculatorService.c) and gdb back trace from the core file
> to this mail.  Below are my server's debug statements before the crash:
>
>
> Started Simple Axis2 HTTP Server ...
> in axis2_skel_CalculatorService_Arithmetic()!
> num1=0.000000, num2=0.000000
> exiting axis2_skel_CalculatorService_Arithmetic()...
> Segmentation fault (core dumped)
>
>
> As you see, num1 and num2 are parsed wrong (I expected 50.000000 and
> 20.000000), so it seems axis2 is having trouble deserializing the
> arguments from the request message.  Please advise on how I should debug
> the server.
>
> Thanks,
>
> Wayne
>
>
> >-----Original Message-----
> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
>
> >Sent: Thursday, January 31, 2008 5:44 PM
> >To: Apache AXIS C User List
> >Subject: Re: Questions/suggestions on WSDL2C
> >
> >Hi Zhang,
> >Please see my inline comment to the code..
> >
> >On Feb 1, 2008 1:30 AM, Zhang, Wayne (IT)
> ><Wa...@morganstanley.com> wrote:
> >> Hi,
> >>
> >> Thanks to all for your quick responses.  I think a simple
> >demo client
> >> (with useful inlined comments explaining what a user should do) will
> >> fit my need.  WRT makefile generation, I understand it's hard to
> >> auto-generate one that works perfectly in  _all_ projects, but it
> >> might be helpful to create a makefile.template kind of thing
> >to set up
> >> all the basic stuff (required defines, libs, include paths,
> >libpaths,
> >> etc) and let the users add their stuff on top of it.
> >>
> >> Now back to the problems I encountered with the client.  (I
> >apologize
> >> for the following long copy-and-paste text, please tell me
> >the proper
> >> way if this is not recommended).  WSDL2C generates the following
> >> header code but I'm not sure what to do with each function (see my
> >> inlined
> >> questions):
> >>
> >>
> >>   /***************** function prototypes - for header file
> >> *************/
> >>   /**
> >>    * axis2_stub_create_CalculatorService
> >>    * Create and return the stub with services populated
> >>    * @param env Environment ( mandatory)
> >>    * @param client_home Axis2/C home ( mandatory )
> >>    * @param endpoint_uri Service endpoint uri( optional ) - if NULL
> >> default picked from WSDL used
> >>    * @return Newly created stub object
> >>    */
> >>   axis2_stub_t*
> >>   axis2_stub_create_CalculatorService(const axutil_env_t *env,
> >>       axis2_char_t *client_home,
> >>       axis2_char_t *endpoint_uri);
> >>   // wz: I looked at the math example source and thought
> >>   // this function should correspond to axis2_math_stub.c's
> >> axis2_math_stub_create_with_endpoint_uri_and_client_home()?
> >
> >Yea, It is exactly the same..
> >>
> >>   /**
> >>    * axis2_stub_populate_services_for_CalculatorService
> >>    * populate the svc in stub with the service and operations
> >>    * @param stub The stub
> >>    * @param env environment ( mandatory)
> >>    */
> >>   void axis2_stub_populate_services_for_CalculatorService(
> >> axis2_stub_t *stub, const axutil_env_t *env);
> >>   // wz: implement it a la axis2_math_stub.c's
> >> axis2_populate_axis_service()?
> >
> >Yea that also do the same functionality.
> >>
> >>
> >>   /**
> >>    * axis2_stub_get_endpoint_uri_of_CalculatorService
> >>    * Return the endpoint URI picked from WSDL
> >>    * @param env environment ( mandatory)
> >>    * @return The endpoint picked from WSDL
> >>    */
> >>   axis2_char_t *
> >>   axis2_stub_get_endpoint_uri_of_CalculatorService(const
> >axutil_env_t
> >> *env);
> >>   // wz: no question here
> >>
> >>
> >>   /**
> >>    * Auto generated function declaration
> >>    * for
> >> "Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"
> >> operation.
> >>    * @param stub The stub (axis2_stub_t)
> >>    * @param env environment ( mandatory)
> >>
> >>    * @param _arithmetic
> >>    * return
> >>      adb_ArithmeticResponse_t*
> >>    */
> >>
> >>   adb_ArithmeticResponse_t*
> >>   axis2_stub_op_CalculatorService_Arithmetic( axis2_stub_t *stub,
> >> const axutil_env_t *env,
> >>       adb_Arithmetic_t* _arithmetic);
> >>   // wz: how should this function extract input parameters from
> >> _arithmetic and send them to the server?
> >
> >HI I suppose you have adb_Arithemetic.h/.c is generated with
> >you.. If not you may have missed the -u in code generation.
> >i.e. retry with WSD2C.sh -uri your.wsdl -u.
> >
> >Then the adb_Arithetic.h will have create function and several
> >setters and getters. You can use these functions to feed data
> >to adb_Arithematic object. The same with adb_Arithematic_Response
> >
> > I.e. your code will  look something like
> >
> >adb_Arithematic_t * ar;
> >adb_Arithematic_Response_t * ares;
> >
> >ar = adb_Arithematic_set_someVar(ar, env, 5); //here someVar
> >should be replaced with actual fields
> >
> >ares = axis2_stub_op_CalculatorService_Arithmetic(stuv, env, ar);
> >
> >int i = adb_Arithematic_Response_get_anotherVar(ares, env);
> >
> >
> >You can have a good idea on how to manipulate these adb object
> >from the "samples/codegen/client/calculator/test_calculator.c"
> >sample in the axis2/c pack.
> >
> >
> >>
> >>
> >>   /**
> >>    * Auto generated function declaration
> >>    * for
> >> "Arithmetic|http://xml.ms.com/ns/msjava/cxfutils/examples/calculator"
> >> operation.
> >>    * @param stub The stub
> >>    * @param env environment ( mandatory)
> >>
> >>    * @param _arithmetic
> >>    * @param user_data user data to be accessed by the callbacks
> >>    * @param on_complete callback to handle on complete
> >>    * @param on_error callback to handle on error
> >>    */
> >>
> >>
> >>
> >>   void axis2_stub_start_op_CalculatorService_Arithmetic(
> >axis2_stub_t
> >> *stub, const axutil_env_t *env,
> >>       adb_Arithmetic_t* _arithmetic,
> >>       void *user_data,
> >>       axis2_status_t ( AXIS2_CALL *on_complete ) (const axutil_env_t
> >> *,
> >> adb_ArithmeticResponse_t* _arithmeticResponse, void *data) ,
> >>       axis2_status_t ( AXIS2_CALL *on_error ) (const axutil_env_t *,
> >> int exception, void *data) );
> >>   // wz: is this the asynchronous version of
> >> axis2_stub_op_CalculatorService_Arithmetic()?  What do I do
> >with data?
> >
> >Oops! we have missed to mention this is async in the doc comment.
> >(anway it is mentioned in the corrosponding .c file). I will
> >correct that in the template.
> >
> >Yea this is async. The data is optional user data that can to
> >be passed to the callback..  IN the callback function
> >prototype we have the data as the argument. This will be
> >really useful to the user to just parse the context to the callback.
> >
> >Thanks
> >Dimuthu
> >
> >>
> >>
> >> Thanks,
> >>
> >> Wayne Zhang
> >> Morgan Stanley | Technology
> >> Wayne.Zhang@morganstanley.com
> >>
> >>
> >>
> >> >-----Original Message-----
> >> >From: Dimuthu Gamage [mailto:dimuthuc@gmail.com]
> >> >Sent: Wednesday, January 30, 2008 10:29 PM
> >> >To: Apache AXIS C User List
> >> >Subject: Re: Questions/suggestions on WSDL2C
> >> >
> >> >Please see my inline comment.
> >> >
> >> >On Jan 31, 2008 8:07 AM, Samisa Abeysinghe <sa...@wso2.com> wrote:
> >> >> Dimuthu Gamage wrote:
> >> >> > Hi Zhang,
> >> >> >
> >> >> > Thanks for your suggestions.
> >> >> >
> >> >> > 1). In fact generating a demo client is a good idea. I
> >> >will look in to that.
> >> >> > For the time being, I'm using a ruby script to generate simple
> >> >> > demonstrations for stub and skels (it automatically
> >> >generates simple
> >> >> > logic with adb), if you find useful you can check it from
> >> >> >
> >http://people.apache.org/~dimuthu/leisure/23_oct/generate_demos.rb.
> >> >> >
> >> >>
> >> >> When there are so many operations, with complex params,
> >how are we
> >> >> supposed to generate a demo client?
> >> >
> >> >I think what we can provide is empty functions (with empty
> >> >logic) as in server side. The adb object manipulation should be
> >> >anyway done by the user. so we don't need to worry about complex
> >> >types in the demo client.. That indeed should be done by the user.
> >> >
> >> >BTW the ruby script I mentioned there, recursively fills the object
> >> >matching pattern in the generated code.. That works only
> >for "in-out"
> >> >MEP. Anyway what we are planning to generate with WSDL2C
> >tool is not
> >> >much complicated as that.
> >> >
> >> >Thanks
> >> >Dimuthu
> >> >
> >> >> >
> >> >> > 2). If we are generating makefiles we may need to think about
> >> >> > both linux and windows users. And we have to decide whether to
> >> >> > use automake build system or just a simple Makefile which
> >> >> > sometime not OS independent. May be some build system
> >expert can help on this.
> >> >> > Sanjaya,, Any Ideas?
> >> >> >
> >> >>
> >> >> IMHO, automake makes things too complicated here. We can
> >> >just generate
> >> >> a simple Makefile tat could be used directly.
> >> >>
> >> >> Thanks,
> >> >> Samisa...
> >> >>
> >> >>
> >> >>
> >> >> > Thanks
> >> >> > Dimuthu
> >> >> >
> >> >> >
> >> >> >
> >> >> > On Jan 31, 2008 12:18 AM, Zhang, Wayne (IT)
> >> >> > <Wa...@morganstanley.com> wrote:
> >> >> >
> >> >> >>
> >> >> >> Hi,
> >> >> >>
> >> >> >> I just started looking at Axis2/C two days ago and it
> >> >looks pretty
> >> >> >> promising.  However I hit a snag using WSDL2C, and I
> >> >couldn't find
> >> >> >> any solutions in the mail archive, so apologies if this
> >> >has already
> >> >> >> been answered before.
> >> >> >>
> >> >> >> I am using WSDL2C to generate a simple "calculator" client and
> >> >> >> server.  I followed the directions in your user manual
> >> >> >> (http://ws.apache.org/axis2/c/docs/axis2c_manual.html#wsdl2c)
> >> >> >> and was able to generate my client stubs and server skeletons
> >> >successfully.
> >> >> >>
> >> >> >> Implementing the server skeleton is pretty straight
> >forward -- I
> >> >> >> just added my business logic in the /* TODO ... */ field.
> >> > However
> >> >> >> implementing the client isn't as easy.  The user manual simply
> >> >> >> states "To do this, go through the header files generated and
> >> >> >> understand the API in line with the WSDL file that you used to
> >> >> >> generate the code."  It will be great if you can provide
> >> >a step-by-step example showing which functions to implement in what
> >> >files.
> >> >> >>
> >> >> >> My other suggestions are:
> >> >> >>
> >> >> >> * Can WSDL2C generate a main() for the client that sets up the
> >> >> >> default env/options and make required axis calls such as
> >> >> >> axis2_endpoint_ref_create(),
> >> >axis2_svc_client_send_receive(), etc.
> >> >> >> and put
> >> >> >> /* TODO */ hints to prompt users to add his business logic?
> >> >> >>
> >> >> >> * It will be great if WSDL2C can also generate makefiles
> >> >to assist
> >> >> >> compiling the server and client, as well as install the
> >> >server in $AXIS_HOME/services.
> >> >> >> This will ease a user's development effort quite a bit.
> >> >> >>
> >> >> >> Many thanks in advance,
> >> >> >>
> >> >> >> Wayne Zhang
> >> >> >> Morgan Stanley | Technology
> >> >> >> 750 Seventh Avenue, 12th Floor | New York, NY  10019
> >> >> >> Phone: +1 212 762-1943
> >> >> >> Wayne.Zhang@morganstanley.com
> >> >> >>
> >> >> >>
> >> >> >>  ________________________________
> >> >> >>
> >> >> >>
> >> >> >> NOTICE: If received in error, please destroy and notify sender.
> >> >> >> Sender does not intend to waive confidentiality or privilege.
> >> >> >> Use of this email is prohibited when received in error.
> >> >> >>
> >> >> >>
> >> >> >
> >> >> >
> >> >--------------------------------------------------------------------
> >> >> > - To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >> >> > For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >>
> >> >>
> >> >>
> >-------------------------------------------------------------------
> >> >> -- To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >> >> For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >> >>
> >> >>
> >> >
> >>
> >>---------------------------------------------------------------------
> >> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >> >For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >> >
> >> >
> >> --------------------------------------------------------
> >>
> >> NOTICE: If received in error, please destroy and notify
> >sender. Sender does not intend to waive confidentiality or
> >privilege. Use of this email is prohibited when received in error.
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >> For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >>
> >>
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> >For additional commands, e-mail: axis-c-user-help@ws.apache.org
> >
> >
> --------------------------------------------------------
>
> NOTICE: If received in error, please destroy and notify sender. Sender does not intend to waive confidentiality or privilege. Use of this email is prohibited when received in error.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-user-help@ws.apache.org