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 Prem <Vi...@cognizant.com> on 2007/03/28 12:39:55 UTC
Re: [Axis2] axis2c - generated skeleton files using WSDL2C for
array of structure having a RESET function. how to use it?
Thanks Milind,
NOw I have compiled all the the services, put the dll & lib's in service
folder in AXIS2C
and trying to test it using the java client giving the error as 'Failed in
creating DLL '
"in detail the error message is in below " help me to solve the poblem.
1. I am just calling a web service with single input in
2. it talks with some com dll and
3. returns the result and then setting this response in webservices return.
"
xP)rsion="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header></soapenv:Header><soapenv:Body><soapenv:Fault><faultcode>env:Receiver</faultcode><faultstring>Failed
in creating
DLL</faultstring></soapenv:Fault></soapenv:Body></soapenv:Envelope> "
the response is not properly tagged .
Milinda Pathirage wrote:
>
> Hi,
> Consider a echo example which echo incoming array of integers like this:
>
> Request Structure:
> struct axis2_echoInts
> {
> axis2_qname_t* qname;
> axis2_array_list_t* attrib_input;
> };
>
> Response Structure:
> struct axis2_echoIntsResponse
> {
>
> axis2_qname_t* qname;
> axis2_array_list_t* attrib_echoIntsReturn;
> };
>
> Business Logic Implementation:
> axis2_echoIntsResponse_t* axis2_skel_Benchmark_echoInts (const axis2_env_t
> *env ,
> axis2_echoInts_t*
> echoInts )
> {
> /* TODO fill this with the necessary business logic */
> axis2_echoIntsResponse_t *response = NULL;
> axis2_array_list_t *input = NULL;
>
> response = axis2_echoIntsResponse_create(env);
>
> input = AXIS2_ECHOINTS_GET_INPUT(echoInts, env);
> AXIS2_ECHOINTSRESPONSE_SET_ECHOINTSRETURN(response, env, input);
> AXIS2_ECHOINTS_RESET_INPUT(echoInts, env);
> return response;
> }
>
> Code that select correct operation inside service skeleton's invoke
> function:
> if ( AXIS2_STRCMP(op_name, "echoInts") == 0 )
> {
>
> input_val11_1 =
> axis2_echoInts_create( env);
> AXIS2_ECHOINTS_DESERIALIZE(input_val11_1, env,
> content_node );
>
> ret_val11 = axis2_skel_Benchmark_echoInts(env,
> input_val11_1 );
> if ( NULL == ret_val11 )
> {
> AXIS2_LOG_ERROR( env->log, AXIS2_LOG_SI, "NULL
> returnted from the business logic from echoInts "
> " %d :: %s",
> env->error->error_number,
>
> AXIS2_ERROR_GET_MESSAGE(env->error));
> return axis2_svc_skel_Benchmark_on_fault(
> svc_skeleton, env, NULL);
> }
> ret_node =
> AXIS2_ECHOINTSRESPONSE_SERIALIZE(ret_val11,
> env, NULL, AXIS2_FALSE);
> AXIS2_ECHOINTSRESPONSE_FREE(ret_val11,
> env);
> AXIS2_ECHOINTS_FREE(input_val11_1, env);
>
> return ret_node;
> }
>
> In the service skeleton's invoke function we get payload(axiom_node) of
> the
> incoming request as parameter. After that we check which operation we have
> to execute.
>
> After selecting correct operation we desirialize the incoming payload to
> echoInts structure and give it as a parameter to the
> axis2_skel_Benchmark_echoInts
> function.
> input_val11_1 = axis2_echoInts_create( env);
> AXIS2_ECHOINTS_DESERIALIZE(input_val11_1, env,
> content_node );
> ret_val11 = axis2_skel_Benchmark_echoInts(env,
> input_val11_1 );
>
> Inside this function we extract the data inside structure and assign it to
> the response structure.
> input = AXIS2_ECHOINTS_GET_INPUT(echoInts, env);
> AXIS2_ECHOINTSRESPONSE_SET_ECHOINTSRETURN(response, env, input);
>
> after that we reset the echoInts structure.
> AXIS2_ECHOINTS_RESET_INPUT(echoInts, env);
>
> This reseting done because inside invoke function we free the two
> structures
> created after serving for the request. Inside the logic of free function
> we
> free all the elements inside array lists. In this free process, problem
> occurs when we trying to free bot h structures . Because we share same
> elements between two structures using pointers. Therefore we have to
> remove
> one pointer from pointing to same array lists. After that no double
> freeing
> occur, because we remove the reference to that memory location from one
> structure. Please go through code inside free logics, then you will be
> able
> to understand the situation. This reseting mechanism does not require if
> we
> don't assign the same attributes to the response structure.
>
> Thanks
> Milinda
>
> On 3/27/07, Prem <Vi...@cognizant.com> wrote:
>>
>>
>> Hi,
>>
>> generated skeleton files using WSDL2C for array structures.
>> Request and response generated files for the unbounded structure data
>> type
>> has a RESET function. how to use it?
>>
>> any help who have used the Structure array will be helpful.
>>
>> -Viji.
>> --
>> View this message in context:
>> http://www.nabble.com/axis2c---generated-skeleton-files-using-WSDL2C-for-array-of-structure-having-a-RESET-function.-how-to-use-it--tf3471795.html#a9688599
>> Sent from the Axis - C++ - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-c-user-help@ws.apache.org
>>
>>
>
>
> --
> milinda@wso2.com
> WSO2, Inc: http://www.wso2.com "Oxygenating the Web Service Platform"
> http://www.milindalakmal.wordpress.com
>
>
--
View this message in context: http://www.nabble.com/axis2c---generated-skeleton-files-using-WSDL2C-for-array-of-structure-having-a-RESET-function.-how-to-use-it--tf3471795.html#a9711090
Sent from the Axis - C++ - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-user-help@ws.apache.org