Hello,

I made a mistake in my last message. Please see my inline comment for
the correction

Cheers,
Cliff

-----Original Message-----
From: Clifford THOMPSON [mailto:[EMAIL PROTECTED] 
Sent: February 22, 2008 15:08
To: Apache AXIS C Developers List
Subject: RE: FW: Question regarding the adjustment of response timeouts

> Hello Samisa,
> 
> I have been doing some tracing, and hopefully I've found some
information that may be useful. I have traced through my blocking
service call:
> 
>     + axis2_stub_op_MyService_MyOperation
>     + axis2_svc_client_send_receive_with_op_name
>     + axis2_op_client_execute
>     + axis2_op_client_two_way_send
> 
> It appears that the call to "axis2_msg_ctx_get_property" returns NULL:
> 
> <code>
>     AXIS2_EXTERN axis2_msg_ctx_t *AXIS2_CALL
>     axis2_op_client_two_way_send(
>         const axutil_env_t * env,
>         axis2_msg_ctx_t * msg_ctx)
>     {
>         axis2_engine_t *engine = NULL;
>         axis2_status_t status = AXIS2_SUCCESS;
>         axis2_msg_ctx_t *response = NULL;
>         axis2_conf_ctx_t *conf_ctx = NULL;
>         axis2_op_t *op = NULL;
>         axiom_soap_envelope_t *response_envelope = NULL;
>         axutil_property_t *property = NULL;
>         long index = -1;
>         axis2_bool_t wait_indefinitely = AXIS2_FALSE;
> 
>         AXIS2_ENV_CHECK(env, NULL);
> 
>         conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
>         engine = axis2_engine_create(env, conf_ctx);
>         if (!engine)
>             return NULL;
>         property =
>             axis2_msg_ctx_get_property(msg_ctx, env,
AXIS2_TIMEOUT_IN_SECONDS); </code>
> 
> And thus the next section of code never picks up the timeout value
since we never find the "property" for the timeout:
> 
> <code>
>         if (property)
>         {
>             axis2_char_t *value = axutil_property_get_value(property,
> env);
>             if (value)
>                 index = AXIS2_ATOI(value);
>             if (index == -1)
>             {
>                 wait_indefinitely = AXIS2_TRUE;
>                 index = 1;
>             }
>         }
> </code>
> 
> which is used later in the function:
> 
> <code>
>         else
>         {
>             while (!response_envelope && index > 0)
>             {
>                 /*wait till the response arrives */
>                 AXIS2_SLEEP(1);
>                 if (!wait_indefinitely)
>                     index--;
>                 response_envelope =
>                     axis2_msg_ctx_get_response_soap_envelope(msg_ctx,
> env);
>         }
> </code>
> 
> You guys are much more familiar which the code base, so does the call
to "axis2_op_client_get_msg_ctx" copy the timeout information from the >
> > "options" member of "op_client" into "msg_ctx" (the variable that is
eventually passed to "axis2_msg_ctx_get_property"):

I meant the call to "axis2_msg_ctx_set_options" not
"axis2_op_client_get_msg_ctx", please see the additional code in the
snippet below:

> 
> <code>
>     AXIS2_EXTERN axis2_status_t AXIS2_CALL
>     axis2_op_client_execute(
>         axis2_op_client_t * op_client,
>         const axutil_env_t * env,
>         const axis2_bool_t block)
>     {
>         axis2_conf_ctx_t *conf_ctx = NULL;
>         axis2_msg_ctx_t *msg_ctx = NULL;
> 
>         axis2_transport_out_desc_t *transport_out = NULL;
>         axis2_transport_in_desc_t *transport_in = NULL;
> 
>         axis2_status_t status = AXIS2_FAILURE;
>         axis2_op_t *op = NULL;
>         axis2_char_t *msg_id = NULL;
> 
>         AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
> 
>         if (op_client->completed)
>         {
>             return AXIS2_FAILURE;
>         }
> 
>         conf_ctx = axis2_svc_ctx_get_conf_ctx(op_client->svc_ctx,
env);
> 
>         msg_ctx = (axis2_msg_ctx_t *) 
> axis2_op_client_get_msg_ctx(op_client, env,
>  
> AXIS2_WSDL_MESSAGE_LABEL_OUT);
> </code>

<code>
       if (!msg_ctx)
        {
            return AXIS2_FAILURE;
        }

        axis2_msg_ctx_set_options(msg_ctx, env, op_client->options);
</code>

> 
> 
> When I traced through the call to "axis2_msg_ctx_get_property", all of
the hash tables stored within "msg_ctx" or its children appear to be > >
> empty. I am not sure if this is correct or not, but I hope this all
helps out with the bug tracking.
> 
> Cheers,
> Cliff
> 
> -----Original Message-----
> From: Samisa Abeysinghe [mailto:[EMAIL PROTECTED]
> Sent: February 20, 2008 18:06
> To: Apache AXIS C Developers List
> Subject: Re: FW: Question regarding the adjustment of response
timeouts
> 
> The current problem is that, for the normal non blocking case, the
implementation does not pick the user option and set it on the socket.
> 
> I hope the fix is straight forward.
> 
> Regards,
> Samisa...
> 
> Clifford THOMPSON wrote:
> > I meant 60000ms... 
> >
> > -----Original Message-----
> > From: Clifford THOMPSON [mailto:[EMAIL PROTECTED]
> > Sent: February 20, 2008 13:40
> > To: Apache AXIS C Developers List
> > Subject: RE: FW: Question regarding the adjustment of response 
> > timeouts
> >
> > Hello Senaka,
> >
> > I took a look at "axis2_http_transport.h" and noticed that the 
> > constants, AXIS2_HTTP_DEFAULT_SO_TIMEOUT and 
> > AXIS2_HTTP_DEFAULT_CONNECTION_TIMEOUT, both held values of 6000ms.
> > This coincides with the upper timeout limit our team was
experiencing,
> 
> > so it may provide a clue to the timeout problem.
> >
> > Cheers,
> > Cliff
> >
> > -----Original Message-----
> > From: Senaka Fernando [mailto:[EMAIL PROTECTED]
> > Sent: February 18, 2008 11:35
> > To: Apache AXIS C Developers List
> > Subject: Re: FW: Question regarding the adjustment of response 
> > timeouts
> >
> > Hi Cliff,
> >
> > We'll look into this before the 1.3.0 release and try to have it
fixed
> 
> > before we release.
> >
> > Regards,
> > Senaka
> >
> >   
> >> Hello Dev Team,
> >>
> >> I presented this question with regards to using timeouts in the 
> >> axis2-c-user forum. Dimuthu is getting similar results under Linux,

> >> and suggested that there may be a bug in timeout behaviour. Please 
> >> see
> >>     
> >
> >   
> >> below for the details.
> >>
> >> Cheers,
> >> Cliff
> >>
> >> -----Original Message-----
> >> From: Dimuthu Gamage [mailto:[EMAIL PROTECTED]
> >> Sent: February 16, 2008 05:23
> >> To: Apache AXIS C User List
> >> Subject: Re: [AXIS2C] Question regarding the adjustment of response

> >> timeouts
> >>
> >> Hi,
> >>
> >> I too checked it in Linux and got the same result,
> >>
> >> Seems we are not using axis2_options_get_timeout_in_milli_seconds
> >> anywhere.. If this is a bug, should be fixed before the 1.3
release.
> >>
> >> Thanks
> >> Dimuthu
> >>
> >> On Feb 16, 2008 1:07 AM, Clifford THOMPSON 
> >> <[EMAIL PROTECTED]> wrote:
> >>     
> >>> Hello,
> >>>
> >>> I have a question about adjusting the timeout period for web
> >>>       
> > services.
> >   
> >>> Our current software dictates that we can have upwards of a 300 
> >>> second
> >>>       
> >>> delay before a response is sent (we have a large amount of data
that
> 
> >>> needs to be prepared before being sent). Currently, our web
service 
> >>> component will timeout after roughly 60 sec (I'm not sure if this
is
> 
> >>> the Axis API, or from the OS). I have tried using some of the 
> >>> timeout
> >>>       
> >
> >   
> >>> functions in the Axis2C API, but they appear to have no effect (if
I
> 
> >>> set the timeout 5 secs and the server takes 10 secs to respond,
the 
> >>> client will wait 10 secs for the response). I am assuming that I
am 
> >>> using the API incorrectly. We are working under WinXP, and have
> >>>       
> >> generate portions of our code using the WSDL2C tool.
> >>     
> >>> We have chosen to generate synchronous code using WSDL2C (so the 
> >>> eventual call in the generate code will be to 
> >>> "axis2_svc_client_send_receive_with_op_qname"). Here is a rough 
> >>> paraphrase of the code that we have and how I thought the timeout 
> >>> function should be
> >>> applied:
> >>>
> >>>     env  = axutil_env_create_all( "MyServiceLog.log",
> >>>                                   AXIS2_LOG_LEVEL_TRACE);
> >>>     assert(NULL != env);
> >>>
> >>>     stub = axis2_stub_create_MyService( env,
> >>>
AXIS2_GETENV("AXIS2C_HOME"),
> >>>
> >>> "http://myserver.ca:8080/services/MyService";);
> >>>     assert(NULL != stub);
> >>>
> >>>
> >>>     status = axis2_options_set_timeout_in_milli_seconds(
> >>>                  axis2_stub_get_options( stub,
> >>>                                          env ),
> >>>                  env,
> >>>                  300000);
> >>>     assert(AXIS2_SUCCESS == status);
> >>>
> >>>     /*                                      */
> >>>     /* lots of interleaving non-Axis2C code */
> >>>     /*                                      */
> >>>
> >>>     responseNode = axis2_stub_op_MyService_MyOperation(
> >>>                       stub,
> >>>                       env,
> >>>                       headerNode1,
> >>>                       headerNode2,
> >>>                       bodyNode);
> >>>     if(NULL !=)
> >>>     {
> >>>         /* process the response */
> >>>     }
> >>>     else
> >>>     {
> >>>        /* log the response error */
> >>>     }
> >>>
> >>> Thank you in advance for the help.
> >>>
> >>> Cheers,
> >>> Cliff
> >>>
> >>>       


---------------------------------------------------------------------
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