You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2012/11/16 18:00:34 UTC

svn commit: r1410471 - in /cxf/branches/2.6.x-fixes: api/src/main/java/org/apache/cxf/endpoint/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ rt/frontend/simple/src/main/java/org/apache/cxf/frontend/

Author: dkulp
Date: Fri Nov 16 17:00:33 2012
New Revision: 1410471

URL: http://svn.apache.org/viewvc?rev=1410471&view=rev
Log:
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.6.x-fixes/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
    cxf/branches/2.6.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
    cxf/branches/2.6.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java

Modified: cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java?rev=1410471&r1=1410470&r2=1410471&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java (original)
+++ cxf/branches/2.6.x-fixes/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java Fri Nov 16 17:00:33 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);
     }
@@ -200,12 +193,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.6.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java?rev=1410471&r1=1410470&r2=1410471&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java (original)
+++ cxf/branches/2.6.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java Fri Nov 16 17:00:33 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.6.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java?rev=1410471&r1=1410470&r2=1410471&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java (original)
+++ cxf/branches/2.6.x-fixes/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java Fri Nov 16 17:00:33 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.invoker.MethodDispatcher;
@@ -47,9 +46,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) {
@@ -82,7 +78,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)