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]
