On Feb 2, 2008 12:37 AM, Zhang, Wayne (IT)
<[EMAIL PROTECTED]> 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:[EMAIL PROTECTED]
>
> >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)
> ><[EMAIL PROTECTED]> 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
> >> [EMAIL PROTECTED]
> >>
> >>
> >> >-----Original Message-----
> >> >From: Dimuthu Gamage [mailto:[EMAIL PROTECTED]
> >>
> >> >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)
> >> ><[EMAIL PROTECTED]> 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:[EMAIL PROTECTED]
> >> >>
> >> >> >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)
> >> >> ><[EMAIL PROTECTED]> 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
> >> >> >> [EMAIL PROTECTED]
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> >-----Original Message-----
> >> >> >> >From: Dimuthu Gamage [mailto:[EMAIL PROTECTED]
> >> >> >> >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
> >> ><[EMAIL PROTECTED]> 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)
> >> >> >> >> > <[EMAIL PROTECTED]> 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
> >> >> >> >> >> [EMAIL PROTECTED]
> >> >> >> >> >>
> >> >> >> >> >>
> >> >> >> >> >>  ________________________________
> >> >> >> >> >>
> >> >> >> >> >>
> >> >> >> >> >> 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:
> >> >> >> >> > [EMAIL PROTECTED]
> >> >> >> >> > For additional commands, e-mail:
> >> >> >> >> > [EMAIL PROTECTED]
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >>
> >> >> >> >>
> >> >> >> >>
> >> >>
> >>------------------------------------------------------------------
> >> >> >-
> >> >> >> >> -- To unsubscribe, e-mail:
> >> >[EMAIL PROTECTED]
> >> >> >> >> For additional commands, e-mail:
> >> >> >> >> [EMAIL PROTECTED]
> >> >> >> >>
> >> >> >> >>
> >> >> >> >
> >> >> >>
> >> >>
> >>
> >>>>-------------------------------------------------------------------
> >> >>>-
> >> >> >>-
> >> >> >> >To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> >> >> >For additional commands, e-mail:
> >[EMAIL PROTECTED]
> >> >> >> >
> >> >> >> >
> >> >> >> --------------------------------------------------------
> >> >> >>
> >> >> >> 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:
> >[EMAIL PROTECTED]
> >> >> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >> >> >>
> >> >> >>
> >> >> >
> >> >>
> >>
> >>>--------------------------------------------------------------------
> >> >>-
> >> >> >To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> >> >For additional commands, e-mail: [EMAIL PROTECTED]
> >> >> >
> >> >> >
> >> >> --------------------------------------------------------
> >> >>
> >> >> 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: [EMAIL PROTECTED]
> >> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >> >>
> >> >
> >>
> >>---------------------------------------------------------------------
> >> >To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> >For additional commands, e-mail: [EMAIL PROTECTED]
> >> >
> >> >
> >> --------------------------------------------------------
> >>
> >> 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: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >
> >---------------------------------------------------------------------
>
> >To unsubscribe, e-mail: [EMAIL PROTECTED]
> >For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> --------------------------------------------------------
>
> 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: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to