cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dk...@apache.org
Subject svn commit: r1410141 - in /cxf/trunk: api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java
Date Fri, 16 Nov 2012 01:36:15 GMT
Author: dkulp
Date: Fri Nov 16 01:36:13 2012
New Revision: 1410141

URL: http://svn.apache.org/viewvc?rev=1410141&view=rev
Log:
Workaround an issue with the IBM7 JDK that causes the proxy to be
garbage collected while an invocation is still in progress.

Modified:
    cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
    cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java

Modified: cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java?rev=1410141&r1=1410140&r2=1410141&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/ClientImpl.java Fri Nov 16 01:36:13
2012
@@ -104,6 +104,12 @@ 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);
     }
@@ -194,6 +200,12 @@ public class ClientImpl
         }
         notifyLifecycleManager();
     }
+    public void setProxyObject(Object cp) {
+        clientProxy = cp;    
+    }
+    public Object getProxyObject() {
+        return clientProxy;
+    }
     
     public Bus getBus() {
         return bus;

Modified: cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java?rev=1410141&r1=1410140&r2=1410141&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java (original)
+++ cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/frontend/ClientProxy.java Fri
Nov 16 01:36:13 2012
@@ -30,6 +30,7 @@ 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;
@@ -46,6 +47,9 @@ 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) {
@@ -120,4 +124,5 @@ public class ClientProxy implements Invo
     public static Client getClient(Object o) {
         return ((ClientProxy)Proxy.getInvocationHandler(o)).getClient();
     }
+
 }



Mime
View raw message