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();
}
+
}