Author: dkulp Date: Fri Nov 16 17:14:54 2012 New Revision: 1410482 URL: http://svn.apache.org/viewvc?rev=1410482&view=rev Log: Merged revisions 1410471 via git cherry-pick from https://svn.apache.org/repos/asf/cxf/branches/2.6.x-fixes
........ r1410471 | dkulp | 2012-11-16 12:00:33 -0500 (Fri, 16 Nov 2012) | 11 lines Merged revisions 1410439 via git cherry-pick from https://svn.apache.org/repos/asf/cxf/trunk ........ r1410439 | dkulp | 2012-11-16 11:31:58 -0500 (Fri, 16 Nov 2012) | 3 lines Previous fix held onto the clientimpl much longer than needed (potentially forever). Make a different attempt. ........ ........ Modified: cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java cxf/branches/2.5.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java Modified: cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java?rev=1410482&r1=1410481&r2=1410482&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java (original) +++ cxf/branches/2.5.x-fixes/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java Fri Nov 16 17:14:54 2012 @@ -103,13 +103,6 @@ public class ClientImpl protected Executor executor; - - // This is mostly to hold onto the client proxy that is using this ClientImpl so - // the IBM JDK's aggressive garbage collector doesn't gc the ClientProxy while - // an invocation is being made - private Object clientProxy; - - public ClientImpl(Bus b, Endpoint e) { this(b, e, (ConduitSelector)null); } @@ -199,12 +192,6 @@ public class ClientImpl } notifyLifecycleManager(); } - public void setProxyObject(Object cp) { - clientProxy = cp; - } - public Object getProxyObject() { - return clientProxy; - } public Bus getBus() { return bus; Modified: cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java?rev=1410482&r1=1410481&r2=1410482&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java (original) +++ cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java Fri Nov 16 17:14:54 2012 @@ -178,8 +178,7 @@ public class JaxWsClientProxy extends or } } } - return result; - + return adjustObject(result); } boolean isAsync(Method m) { return m.getName().endsWith("Async") Modified: cxf/branches/2.5.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java?rev=1410482&r1=1410481&r2=1410482&view=diff ============================================================================== --- cxf/branches/2.5.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java (original) +++ cxf/branches/2.5.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java Fri Nov 16 17:14:54 2012 @@ -30,7 +30,6 @@ import java.util.logging.Logger; import org.apache.cxf.common.i18n.Message; import org.apache.cxf.common.logging.LogUtils; import org.apache.cxf.endpoint.Client; -import org.apache.cxf.endpoint.ClientImpl; import org.apache.cxf.endpoint.Endpoint; import org.apache.cxf.interceptor.Fault; import org.apache.cxf.service.model.BindingOperationInfo; @@ -46,9 +45,6 @@ public class ClientProxy implements Invo public ClientProxy(Client c) { endpoint = c.getEndpoint(); client = c; - if (c instanceof ClientImpl) { - ((ClientImpl)c).setProxyObject(this); - } } public void close() throws IOException { if (client != null) { @@ -81,7 +77,14 @@ public class ClientProxy implements Invo params = new Object[0]; } - return invokeSync(method, oi, params); + Object o = invokeSync(method, oi, params); + //call a virtual method passing the object. This causes the IBM JDK + //to keep the "this" pointer references and thus "this" doesn't get + //finalized in the midst of an invoke operation + return adjustObject(o); + } + protected Object adjustObject(Object o) { + return o; } public Object invokeSync(Method method, BindingOperationInfo oi, Object[] params)
