Hi

I generated code with WSDL2C in axis2java2-1.3.

Once the C code is generated, i compiled the code and made a shared library.
After this i copied the shared library adn the service.xml to services
folder in the repository and started the axis2_http_server. When i gave
http://localhost:9090/soap from browser, i am able to see my service
running.
"Deployed Services*parseMessage **Available Operations*

   - parseMessage"

But when i send a message from client I am getting segmentation fault. I
copied hello.c sample client code, and changed at appropriate places.
  greet_om_ele = axiom_element_create(env, NULL, "parseMessage", NULL,
&greet_om_node);
  axiom_element_set_text(greet_om_ele, env, "I am sending a parse Message!",
greet_om_node);

And it gave a segmentation fault. Please let me know whether i am sending it
correctly or not. I am attaching the files generated for input message as
well as the stack trace. Please help.

Thanks
Sathya

[Switching to Thread -1222382672 (LWP 6863)]
0xb7553a97 in axis2_msg_recv_make_new_svc_obj (msg_recv=0x8094ef0,
env=0x809d298, msg_ctx=0x0) at msg_recv.c:157
157         AXIS2_SVC_SKELETON_INIT((axis2_svc_skeleton_t *)impl_class,
env);
(gdb) where
#0  0xb7553a97 in axis2_msg_recv_make_new_svc_obj (msg_recv=0x8094ef0,
env=0x809d298, msg_ctx=0x0) at msg_recv.c:157
#1  0xb7553b2b in axis2_msg_recv_get_impl_obj (msg_recv=0x8094ef0,
env=0x809d298, msg_ctx=0x809dcb8) at msg_recv.c:184
#2  0xb75540a9 in axis2_raw_xml_in_out_msg_recv_invoke_business_logic_sync
(msg_recv=0x8094ef0, env=0x809d298,
    msg_ctx=0x809dcb8, new_msg_ctx=0x809f580) at
raw_xml_in_out_msg_recv.c:93
#3  0xb7553f32 in axis2_msg_recv_invoke_business_logic (msg_recv=0x8093f78,
env=0x809d298, in_msg_ctx=0x809dcb8,
    out_msg_ctx=0x809f580) at msg_recv.c:372
#4  0xb7553db7 in axis2_msg_recv_receive_impl (msg_recv=0x8094ef0,
env=0x809d298, msg_ctx=0x809dcb8,
    callback_recv_param=0x0) at msg_recv.c:304
#5  0xb7553f7e in axis2_msg_recv_receive (msg_recv=0x8093f78, env=0x809d298,
msg_ctx=0x809dcb8, callback_recv_param=0x0)
    at msg_recv.c:407
#6  0xb754ca7a in axis2_engine_receive (engine=0x809ed48, env=0x809d298,
msg_ctx=0x809dcb8) at engine.c:288
#7  0xb75dc387 in axis2_http_transport_utils_process_http_post_request
(env=0x809d298, msg_ctx=0x809dcb8,
    in_stream=0x809d2c0, out_stream=0x809d2f0, content_type=0x809c010
"application/soap+xml;charset=UTF-8",
    content_length=134868296, soap_action_header=0x0,
    request_uri=0x809dec8 "http://127.0.0.1:9090/axis2/services/parseMessage";)
at http_transport_utils.c:485
#8  0xb75db7f4 in axis2_http_worker_process_request (http_worker=0x809cb00,
env=0x809d298, svr_conn=0x809d2b0,
    simple_request=0x809d350) at http_worker.c:299
#9  0xb750df94 in axis2_svr_thread_worker_func (thd=0x809d230,
data=0x809cb20) at http_svr_thread.c:256
#10 0xb759a094 in dummy_worker (opaque=0x8093f78) at thread_unix.c:85
#11 0xb73b4dac in start_thread () from /lib/tls/libpthread.so.0
#12 0xb73419ea in clone () from /lib/tls/libc.so.6
       /**
        * adb_inputMessage.h
        *
        * This file was auto-generated from WSDL
        * by the Apache Axis2/C version: 1.3  Built on : Aug 10, 2007 (04:45:58 LKT)
        *
        */

        #include "adb_inputMessage.h"
          
              /**
               * implmentation of the inputMessage|http://www.abnamro.com/paymentrouter element
               */
             


        struct adb_inputMessage
        {
            
                axutil_qname_t* qname;
            axis2_char_t* attrib_inputMessage;
            
        };


       /************************* Function Implmentations ********************************/
        AXIS2_EXTERN adb_inputMessage_t* AXIS2_CALL
        adb_inputMessage_create(
            const axutil_env_t *env )
        {
            adb_inputMessage_t *_inputMessage = NULL;
            
              axutil_qname_t* qname = NULL;
            
            AXIS2_ENV_CHECK(env, NULL);

            _inputMessage = (adb_inputMessage_t *) AXIS2_MALLOC(env->
                allocator, sizeof(adb_inputMessage_t));

            if(NULL == _inputMessage)
            {
                AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
                return NULL;
            }

            
              qname =  axutil_qname_create (env,
                        "inputMessage",
                        "http://www.abnamro.com/paymentrouter";,
                        "ns1");

              _inputMessage->qname = qname;
            

            return _inputMessage;
         }

        axis2_status_t AXIS2_CALL
        adb_inputMessage_free (
                adb_inputMessage_t* _inputMessage,
                const axutil_env_t *env)
        {
            
            

            AXIS2_ENV_CHECK(env, AXIS2_FAILURE);

            
              if(_inputMessage->qname )
              {
                  axutil_qname_free (_inputMessage->qname, env);
                  _inputMessage->qname = NULL;
              }
            

            if(_inputMessage)
            {
                AXIS2_FREE( env->allocator, _inputMessage);
                _inputMessage = NULL;
            }
            return AXIS2_SUCCESS;
        }

          
           axutil_qname_t* AXIS2_CALL
           adb_inputMessage_get_qname (
                   adb_inputMessage_t* _inputMessage,
                   const axutil_env_t *env)
           {
               AXIS2_ENV_CHECK(env, AXIS2_FAILURE);

               return _inputMessage-> qname;
           }
        

        axis2_status_t AXIS2_CALL
        adb_inputMessage_deserialize(
                adb_inputMessage_t* _inputMessage,
                const axutil_env_t *env,
                axiom_node_t* parent)
        {

            axis2_status_t status = AXIS2_SUCCESS;
            axiom_namespace_t *ns1 = NULL;
            
             axis2_char_t* text_value = NULL;
             axutil_qname_t *qname = NULL;
            
            
              axutil_qname_t *element_qname = NULL;
            
               axiom_node_t *first_node = NULL;
               
             
               axiom_node_t *current_node = NULL;
               axiom_element_t *current_element = NULL;
            
            AXIS2_ENV_CHECK(env, AXIS2_FAILURE);

            ns1 = axiom_namespace_create (env,
                                         "http://www.abnamro.com/paymentrouter";,
                                         "ns1");
            
              if ( NULL == parent )
              {
                /** This should be checked above */
                AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "NULL elemenet for inputMessage"
                                              " %d :: %s", env->error->error_number,
                                              AXIS2_ERROR_GET_MESSAGE(env->error));
                return AXIS2_FAILURE;
              }
            
                    current_element = axiom_node_get_data_element( parent, env);
                    qname = axiom_element_get_qname( current_element, env, parent);
                    if ( axutil_qname_equals( qname, env, _inputMessage-> qname ) )
                    {
                        first_node = axiom_node_get_first_child( parent, env);
                    }
                    else
                    {
                        first_node = parent;
                    }
                 

                     
                     /**
                      * building inputMessage element
                      */
                     
                     
                     
                                   /**
                                     * because elements are not ordered we should surf all the sibling to pick the right one
                                     */
                               for ( current_node = first_node; current_node != NULL;
                                             current_node = axiom_node_get_next_sibling( current_node, env))
                               {
                                  current_element = axiom_node_get_data_element( current_node, env);
                                  qname = axiom_element_get_qname( current_element, env, current_node);
                                  element_qname = axutil_qname_create( env, "inputMessage", "http://www.abnamro.com/paymentrouter";, "ns1");
                                  if ( axutil_qname_equals( element_qname, env, qname))
                                  {
                                       /** found the requried element */
                                       break;
                                  }
                               }
                             
                           if ( current_node != NULL)
                           {
                              
                                      text_value = axiom_element_get_text(current_element, env, current_node );
                                      status = adb_inputMessage_set_inputMessage( _inputMessage, env,
                                                                   text_value);
                                    
                                 if( AXIS2_FAILURE ==  status)
                                 {
                                     AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "failed in setting the value for inputMessage "
                                                         " %d :: %s", env->error->error_number,
                                                         AXIS2_ERROR_GET_MESSAGE(env->error));
                                     return AXIS2_FAILURE;
                                 }
                           }
                           
                               else
                               {
                                   /** this is not a nillable element*/
                                   AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "non nillable or minOuccrs != 0 element inputMessage missing"
                                                         " %d :: %s", env->error->error_number,
                                                         AXIS2_ERROR_GET_MESSAGE(env->error));
                                   return AXIS2_FAILURE;
                               }
                            

          return status;
       }

        axiom_node_t* AXIS2_CALL
        adb_inputMessage_serialize(
                adb_inputMessage_t* _inputMessage,
                const axutil_env_t *env, axiom_node_t* parent, int has_parent)
        {
            
            axiom_namespace_t *ns1 = NULL;
            
                    axis2_char_t *text_value_1;
                    
               axiom_node_t *current_node = NULL;
               axiom_element_t *current_element = NULL;
               axiom_data_source_t *data_source = NULL;
               axutil_stream_t *stream = NULL;
               axis2_char_t *start_input_str = NULL;
               axis2_char_t *end_input_str = NULL;
               unsigned int start_input_str_len = 0;
               unsigned int end_input_str_len = 0;
            
            AXIS2_ENV_CHECK(env, NULL);

            ns1 = axiom_namespace_create (env,
                                         "http://www.abnamro.com/paymentrouter";,
                                         "ns1");
            
                if( parent == NULL)
                {
                    current_element = axiom_element_create (env, parent, "inputMessage", ns1 , &current_node);
                    axiom_element_set_namespace( current_element, env, ns1, current_node);
                    
                    parent = current_node;
                }
               
                if(has_parent)
                {
                    data_source = axiom_node_get_data_element(parent, env);
                    if (!data_source)
                        return NULL;
                    stream = axiom_data_source_get_stream(data_source, env); /* assume parent is of type data source */
                    if (!stream)
                        return NULL;
                    current_node = parent;
                }
                else
                {
                    data_source = axiom_data_source_create(env, parent, &current_node);
                    stream = axiom_data_source_get_stream(data_source, env);
                }
             
                     
                     /**
                      * parsing inputMessage element
                      */
                     

                    
                    
                        start_input_str = "<ns1:inputMessage>";
                        start_input_str_len = axutil_strlen(start_input_str);
                        end_input_str = "</ns1:inputMessage>";
                        end_input_str_len = axutil_strlen(end_input_str);
                    
                           text_value_1 = _inputMessage->attrib_inputMessage;
                           axutil_stream_write(stream, env, start_input_str, start_input_str_len);
                           axutil_stream_write(stream, env, text_value_1, axutil_strlen(text_value_1));
                           axutil_stream_write(stream, env, end_input_str, end_input_str_len);
                        
            return parent;
        }

        

            /**
             * getter for inputMessage.
             */
            axis2_char_t* AXIS2_CALL
            adb_inputMessage_get_inputMessage(
                    adb_inputMessage_t* _inputMessage,
                    const axutil_env_t *env)
             {
                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);

                return _inputMessage-> attrib_inputMessage;
             }

            /**
             * setter for inputMessage
             */
            axis2_status_t AXIS2_CALL
            adb_inputMessage_set_inputMessage(
                    adb_inputMessage_t* _inputMessage,
                    const axutil_env_t *env,
                    axis2_char_t*  param_inputMessage)
             {
                

                AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
                if(!_inputMessage)
                {
                    return AXIS2_FAILURE;
                }

                
                  if( NULL == param_inputMessage )
                  {
                      AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "inputMessage is NULL, but not a nullable element"
                                                 " %d :: %s", env->error->error_number,
                                                 AXIS2_ERROR_GET_MESSAGE(env->error));
                      return AXIS2_FAILURE;
                  }
                _inputMessage-> attrib_inputMessage = param_inputMessage;
                return AXIS2_SUCCESS;
             }

            


        #ifndef ADB_INPUTMESSAGE_H
        #define ADB_INPUTMESSAGE_H

        /**
        * adb_inputMessage.h
        *
        * This file was auto-generated from WSDL
        * by the Apache Axis2 version: 1.3  Built on : Aug 10, 2007 (04:45:58 LKT)
        */

        

        #include <stdio.h>
        #include <axiom.h>
        #include <axutil_utils.h>
        #include <axiom_soap.h>
        #include <axis2_client.h>

        #ifdef __cplusplus
        extern "C"
        {
        #endif

        #define AXIS2_DEFAULT_DIGIT_LIMIT 64
        /**
        *  adb_inputMessage class class
        */
        typedef struct adb_inputMessage adb_inputMessage_t;

        AXIS2_EXTERN adb_inputMessage_t* AXIS2_CALL
        adb_inputMessage_create(
            const axutil_env_t *env );

        axis2_status_t AXIS2_CALL
        adb_inputMessage_free (
            adb_inputMessage_t* _inputMessage,
            const axutil_env_t *env);

        
        axutil_qname_t* AXIS2_CALL
        adb_inputMessage_get_qname (
            adb_inputMessage_t* _inputMessage,
            const axutil_env_t *env);
        

        axiom_node_t* AXIS2_CALL
        adb_inputMessage_serialize(
            adb_inputMessage_t* _inputMessage,
            const axutil_env_t *env,
            axiom_node_t* inputMessage_om_node, int has_parent);

        axis2_status_t AXIS2_CALL
        adb_inputMessage_deserialize(
            adb_inputMessage_t* _inputMessage,
            const axutil_env_t *env, axiom_node_t* parent);

        

        /**
         * getter for inputMessage.
         */
        axis2_char_t* AXIS2_CALL
        adb_inputMessage_get_inputMessage(
            adb_inputMessage_t* _inputMessage,
            const axutil_env_t *env);

        /**
         * setter for inputMessage
         */
        axis2_status_t AXIS2_CALL
        adb_inputMessage_set_inputMessage(
            adb_inputMessage_t* _inputMessage,
            const axutil_env_t *env,
            axis2_char_t*  param_inputMessage);

        

     #ifdef __cplusplus
     }
     #endif

     #endif /* ADB_INPUTMESSAGE_H */
    

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

Reply via email to