You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Ashish Soni <as...@gmail.com> on 2015/04/28 15:56:12 UTC
[Axis2] how to close client when using setUseSeparateListener with
Non-Blocking Invocation
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."