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]
