axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nanpeng Chen (JIRA)" <j...@apache.org>
Subject [jira] Created: (AXIS2-4007) Axis2 1.4.1 client stub not freed
Date Tue, 02 Sep 2008 21:13:44 GMT
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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org


Mime
View raw message