[ 
https://issues.apache.org/jira/browse/AXIS2-4007?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12628083#action_12628083
 ] 

Nanpeng Chen commented on AXIS2-4007:
-------------------------------------

I sent 1 msg/sec in my test to see the memory usage dramatically increased with 
Axis2 1.4.1. But with Axis2 1.2, under the same testing environment, there is 
no memory leak. 

> Axis2 1.4.1 client stub not freed
> ---------------------------------
>
>                 Key: AXIS2-4007
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4007
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: client-api
>    Affects Versions: 1.4.1
>         Environment: Axis2 1.4.1
> jdk1.5.0_12
>            Reporter: Nanpeng Chen
>
> For Axis2 1.4.1, if I instantiate a new client stub for every web service 
> request, the stub is not freed. This was not happened with Axis2 1.2. For 
> example, I modified Version service's getVersion() to do following:
>       public sample.axisversion.GetVersionResponse getVersion() throws 
> ExceptionException0 {
>               TestServiceStub stub = null;
>               try {
>                       stub = new 
> TestServiceStub("http://localhost:8080/axis2_141/services/TestService/";);
>                       HelloResponse response = stub.Hello(new 
> HelloRequest("myName"));
>               } catch (AxisFault e) {
>                       System.err.println(e.getMessage());
>               } catch (RemoteException e) {
>                       System.err.println(e.getMessage());
>               } finally {
>                       if (stub != null) {
>                               try {
>                                       stub.cleanup();
>                               } catch (AxisFault e) {
>                                       System.err.println(e.getMessage());
>                               }
>                       }
>               }
>               GetVersionResponse response = new GetVersionResponse();
>               response.set_return("1.4.1");
>               return response;
>       }
> Each time getVersion() is called, it creates a new instance of 
> TestServiceStub, and uses it to send out a HelloRequest. I put this modified 
> Version.aar along with the TestService.aar into axis2_141.war and deployed it 
> to JBoss. After I sent multiple version requests to the Version service, I 
> saw significant memory leak for JBOSS.
> I also tried to keep an instance of the stub into a singleton class, and use 
> the same instance every time as following:
>       public sample.axisversion.GetVersionResponse getVersion() throws 
> ExceptionException0 {
>               TestServiceStub stub = null;
>               try {
>                       stub = 
> TestServiceStubSingleton.INSTANCE.getStub("http://localhost:8080/axis2_141/services/TestService/";);
>                       HelloResponse response = stub.Hello(new 
> HelloRequest("myName"));
>               } catch (AxisFault e) {
>                       System.err.println(e.getMessage());
>               } catch (RemoteException e) {
>                       System.err.println(e.getMessage());
>               }
>               GetVersionResponse response = new GetVersionResponse();
>               response.set_return("1.4.1");
>               return response;
>       }
> This workaround fixed the memory leak. But in our applications, we have 
> situations that new client stub has to be created each time. I think the 
> better solution is for Axis2 to free the client stub.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to