Hi ,
As you said the problem is client terminate without waiting for
response ,one possible solution is  set a Thread with reasonable time
out to hold the process  without  terminate.

Callback callback = new Callback() {

            public void onComplete(AsyncResult result) {

               //do something

            }



------------------------------------------
//wait till client get the response

while (!callback.isComplete()) {

            Thread.sleep(1000);

            index++;

            if (index > 20) {

                throw new AxisFault("Time out");

            }

        }



Thanks,



On Thu, Mar 12, 2009 at 12:44 PM, Parthasarathy Kesavaraj
<parthasarathy.kesava...@gmail.com> wrote:
> I also have the same issue. I am calling a third party BPEL process that
> sends the callback response.
> I could see the process sends the callback but the client already exited
> without receiving the callback.
> Also i could not find any doc on async callback. Is it supported and how to
> implement the client for a service with async callback
> Thanks
> Partha
>
> On Thu, Mar 12, 2009 at 12:37 PM, Yong Yuan <yycs...@gmail.com> wrote:
>>
>> Hi,
>> I generated my asynchronous Axis2 client and service using WSDL2Java Ant
>> task(i.e., I set asynconly to true when calling the ant task). When I sent a
>> request to the service using the client, the client always exited
>> successfully. However, the server never received any request, and the
>> client's callback method never got called. The strange thing is, if I
>> stepped through the client in a debugger slowly, the server would receive
>> the request, but failed to return the response because the client had
>> already terminated.
>> Here is how I called the client, and it always exited successfully:
>> MyServiceStub stub = new
>> MyServiceStub("http://localhost:8080/axis2/services/myservice";);
>> GetResultsRequest request = new GetResultsRequest();
>> //Set a number of request parameters here
>> stub.startGetResults(request, new MyServiceCallbackHandler(){
>> public void receiveResultGetResults(GetResultsResponse result) {
>> System.out.println(result.getMessage());
>> }
>> });
>> I turned on logging of axis2, and found if the server didn't receive any
>> request, the client-side log would end with the following traces:
>>
>> (ConfigurationContext.java:329) 2009-03-11 22:19:00,350 DEBUG
>> registerOperationContext (false):
>> org.apache.axis2.context.operationcont...@10f0625 with key:
>> urn:uuid:4CA907BDD68BB1F7B81236835140359
>> (OutInAxisOperation.java:167) 2009-03-11 22:19:16,610 DEBUG Entry:
>> OutInAxisOperationClient::execute, false
>> (OutInAxisOperation.java:197) 2009-03-11 22:19:23,781 DEBUG
>> OutInAxisOperationClient: useAsyncOption null
>> (ConfigurationContext.java:329) 2009-03-11 22:21:13,352 DEBUG
>> registerOperationContext (false):
>> org.apache.axis2.context.operationcont...@10f0625 with key:
>> urn:uuid:4CA907BDD68BB1F7B81236835140359
>> (ConfigurationContext.java:336) 2009-03-11 22:21:13,352 DEBUG msgContext:
>> [MessageContext: logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] action:
>> http://myservice.services.my.com/GetResults
>> (Phase.java:292) 2009-03-11 22:21:13,355 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Checking pre-condition for
>> Phase "OperationOutPhase"
>> (Phase.java:305) 2009-03-11 22:21:13,355 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Invoking phase
>> "OperationOutPhase"
>> (Phase.java:328) 2009-03-11 22:21:13,355 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Checking post-conditions for
>> phase "OperationOutPhase"
>> (Phase.java:292) 2009-03-11 22:21:13,355 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Checking pre-condition for
>> Phase "RMPhase"
>> (Phase.java:305) 2009-03-11 22:21:13,356 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Invoking phase "RMPhase"
>> (Phase.java:328) 2009-03-11 22:21:13,356 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Checking post-conditions for
>> phase "RMPhase"
>> (Phase.java:292) 2009-03-11 22:21:13,356 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Checking pre-condition for
>> Phase "PolicyDetermination"
>> (Phase.java:305) 2009-03-11 22:21:13,356 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Invoking phase
>> "PolicyDetermination"
>> (Phase.java:328) 2009-03-11 22:21:13,356 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Checking post-conditions for
>> phase "PolicyDetermination"
>> (Phase.java:292) 2009-03-11 22:21:13,356 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Checking pre-condition for
>> Phase "MessageOut"
>> (Phase.java:305) 2009-03-11 22:21:13,357 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Invoking phase "MessageOut"
>> (Phase.java:328) 2009-03-11 22:21:13,357 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Checking post-conditions for
>> phase "MessageOut"
>> (Phase.java:292) 2009-03-11 22:21:13,357 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Checking pre-condition for
>> Phase "Security"
>> (Phase.java:305) 2009-03-11 22:21:13,359 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Invoking phase "Security"
>> (Phase.java:328) 2009-03-11 22:21:13,359 DEBUG [MessageContext:
>> logID=urn:uuid:4CA907BDD68BB1F7B81236835273363] Checking post-conditions for
>> phase "Security"
>> If the server did get the request from the client, the client-side log
>> would end with the following trace in addition to the traces mentioned
>> above:
>> (SOAPMessageFormatter.java:133) 2009-03-11 22:21:13,433 DEBUG contentType
>> from the OMOutputFormat =text/xml
>> (SOAPMessageFormatter.java:158) 2009-03-11 22:21:13,434 DEBUG contentType
>> returned =text/xml; charset=UTF-8
>> (AbstractContext.java:407) 2009-03-11 22:21:13,441 DEBUG
>> ==================
>> (AbstractContext.java:408) 2009-03-11 22:21:13,441 DEBUG  Property set on
>> object org.apache.axis2.context.messagecont...@3cbb4b
>> (AbstractContext.java:409) 2009-03-11 22:21:13,441 DEBUG   Key
>> =HTTP_METHOD_OBJECT
>> (AbstractContext.java:413) 2009-03-11 22:21:13,441 DEBUG   Value Class =
>> org.apache.commons.httpclient.methods.PostMethod
>> (AbstractContext.java:414) 2009-03-11 22:21:13,441 DEBUG   Value
>> Classloader = sun.misc.launcher$appclassloa...@1a7bf11
>> (AbstractContext.java:416) 2009-03-11 22:21:13,442 DEBUG Call Stack =
>> DEBUG_FRAME =
>> org.apache.axis2.util.JavaUtils.callStackToString(JavaUtils.java:564)
>> DEBUG_FRAME =
>> org.apache.axis2.context.AbstractContext.debugPropertySet(AbstractContext.java:416)
>> DEBUG_FRAME =
>> org.apache.axis2.context.AbstractContext.setProperty(AbstractContext.java:182)
>> DEBUG_FRAME =
>> org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:522)
>> DEBUG_FRAME =
>> org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:189)
>> DEBUG_FRAME =
>> org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
>> DEBUG_FRAME =
>> org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessage
>> .....
>> .....
>> It seems somehow the client exited prematurely before the worker thread
>> that sent out request could finish.
>> Could anyone please let me know why this happened? Did I miss anything
>> when using asynchronous services? Is there any way I can fix this problem?
>> Thanks a lot!
>> Regards,
>> Yong
>>
>
>
>
> --
> Regards
> Partha
>



-- 
Sagara Gunathunga

Blog - http://ssagara.blogspot.com
Web - http://sagaras.awardspace.com/

Reply via email to