[Axis2] how to close client when using setUseSeparateListener with Non-Blocking Invocation

Ashish Soni <[email protected]>
Newsgroups gmane.text.xml.axis.user
Message-ID <CAHapJjN+y9VtGkx-c50zWOPAN7sidT24d1fk1axvH9UvksXMHg@mail.gmail.com>
Hi,



I am trying to implement the example mentioned in Apache Axis2 Advanced
User’s Guide [http://axis.apache.org/axis2/java/core/docs/adv-userguide.html].




When writing the web service client using “Do a Non-Blocking Invocation” I
found that:

1)       it’s not terminating the client

2)      Next execution of client it’s not calling the
Axis2SampleDocLitServiceCallbackHandler

3)      both client hang.

4)      All for further execution of client hang without entering to
Axis2SampleDocLitServiceCallbackHandler.



I found that it’s happening because it use a separate Listener for response
and after first execution of client it’s not getting cleaned up, so further
call to client hang and not entering to
Axis2SampleDocLitServiceCallbackHandler.



Code Snippet:



package org.apache.axis2.userguide;



import java.rmi.RemoteException;



import org.apache.axis2.AxisFault;

import org.apache.axis2.Constants;

import org.apache.axis2.transport.http.HTTPConstants;

import org.apache.axis2.userguide.xsd.EchoStringParamDocument;

import org.apache.axis2.userguide.xsd.EchoStringReturnDocument;



public class Axis2SampleDocLitServiceClient {

                public static void main(String[] args) {

                                Axis2SampleDocLitServiceStub stub= null;

                                try{

                                                stub= new
Axis2SampleDocLitServiceStub("
http://localhost:9090/axis2/services/Axis2SampleDocLitService");



                                                EchoStringParamDocument
reqDoc= EchoStringParamDocument.Factory.newInstance();


reqDoc.setEchoStringParam("Ashish Soni");



/**

                                                 * Do a Non-Blocking
Invocation

                                                 */


*stub._getServiceClient().engageModule("addressing");*

*
stub._getServiceClient().getOptions().setUseSeparateListener(true);*

*
stub._getServiceClient().getOptions().setProperty(HTTPConstants.AUTO_RELEASE_CONNECTION,
Constants.VALUE_TRUE);*

*
stub._getServiceClient().getOptions().setProperty(HTTPConstants.REUSE_HTTP_CLIENT,
Constants.VALUE_FALSE);*




Axis2SampleDocLitServiceCallbackHandler handler= new
Axis2SampleDocLitServiceCallbackHandler()
{


                                                                @Override

                                                                public void
receiveErrorechoString(Exception e) {


System.out.println(e.getMessage());

                                                                }



                                                                @Override

                                                                public void
receiveResultechoString(


EchoStringReturnDocument result) {


System.out.println("Callback Handler called: " +
result.getEchoStringReturn());


completed= true;

                                                                }

                                                };




stub.startechoString(reqDoc, handler);





stub._getServiceClient().getOptions().getTransportIn().getReceiver().destroy();

                                }catch(RemoteException fault) {

                                                fault.printStackTrace();

                                } finally {

                                                if(stub!=null) {

                                                                try{


*stub._getServiceClient().cleanupTransport();
*


}catch(AxisFault fault) {


// Nothing need to be done

                                                                }

                                                }

                                }

                }

}



Could please help how to do the clean of *“response stream” *after getting
the reponse.



References followed:

http://axis.apache.org/axis2/java/core/docs/adv-userguide.html

http://amilachinthaka.blogspot.in/2010/01/improving-axis2-http-transport-client.html




-- 
Ashish Soni
Bangalore(Karnataka)- 560076

"A dream becomes a goal when action is taken toward its achievement."
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.