Author: dkulp
Date: Fri Mar 2 01:54:55 2012
New Revision: 1296027
URL: http://svn.apache.org/viewvc?rev=1296027&view=rev
Log:
Merged revisions 1295937 via svn merge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1295937 | dkulp | 2012-03-01 17:10:04 -0500 (Thu, 01 Mar 2012) | 2 lines
[CXF-4149] Hold onto dispatch and proxy to make sure it isn't garbage
collected and destroyed prior to the response coming back.
........
Modified:
cxf/branches/2.5.x-fixes/ (props changed)
cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.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/jaxws/src/main/java/org/apache/cxf/jaxws/JaxwsClientCallback.java
cxf/branches/2.5.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java
Propchange: cxf/branches/2.5.x-fixes/
('svn:mergeinfo' removed)
Propchange: cxf/branches/2.5.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified:
cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java?rev=1296027&r1=1296026&r2=1296027&view=diff
==============================================================================
---
cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
(original)
+++
cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
Fri Mar 2 01:54:55 2012
@@ -394,7 +394,7 @@ public class DispatchImpl<T> implements
checkError();
client.setExecutor(getClient().getEndpoint().getExecutor());
- ClientCallback callback = new JaxwsClientCallback<T>(asyncHandler);
+ ClientCallback callback = new JaxwsClientCallback<T>(asyncHandler,
this);
Response<T> ret = new JaxwsResponseCallback<T>(callback);
try {
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=1296027&r1=1296026&r2=1296027&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 Mar 2 01:54:55 2012
@@ -258,7 +258,7 @@ public class JaxWsClientProxy extends or
} else {
handler = null;
}
- ClientCallback callback = new JaxwsClientCallback<Object>(handler);
+ ClientCallback callback = new JaxwsClientCallback<Object>(handler,
this);
Response<Object> ret = new JaxwsResponseCallback<Object>(callback);
client.invoke(callback, oi, params);
Modified:
cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxwsClientCallback.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxwsClientCallback.java?rev=1296027&r1=1296026&r2=1296027&view=diff
==============================================================================
---
cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxwsClientCallback.java
(original)
+++
cxf/branches/2.5.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxwsClientCallback.java
Fri Mar 2 01:54:55 2012
@@ -31,9 +31,11 @@ import org.apache.cxf.endpoint.ClientCal
class JaxwsClientCallback<T> extends ClientCallback {
final AsyncHandler<T> handler;
+ final Object proxy;
- public JaxwsClientCallback(final AsyncHandler<T> handler) {
+ public JaxwsClientCallback(final AsyncHandler<T> handler, Object p) {
this.handler = handler;
+ this.proxy = p;
}
public void handleResponse(Map<String, Object> ctx, Object[] res) {
context = ctx;
Modified:
cxf/branches/2.5.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java?rev=1296027&r1=1296026&r2=1296027&view=diff
==============================================================================
---
cxf/branches/2.5.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java
(original)
+++
cxf/branches/2.5.x-fixes/systests/jaxws/src/test/java/org/apache/cxf/systest/jaxws/ClientServerTest.java
Fri Mar 2 01:54:55 2012
@@ -383,6 +383,29 @@ public class ClientServerTest extends Ab
throw (Exception)ex.getCause();
}
}
+
+ @Test
+ public void testAsyncDiscardProxy() throws Exception {
+ URL wsdl = getClass().getResource("/wsdl/hello_world.wsdl");
+ assertNotNull(wsdl);
+
+ SOAPService service = new SOAPService(wsdl, serviceName);
+
+ assertNotNull(service);
+
+ Greeter greeter = service.getPort(portName, Greeter.class);
+
+ assertNotNull(service);
+ updateAddressPort(greeter, PORT);
+
+ Response<GreetMeLaterResponse> r1 = greeter.greetMeLaterAsync(3000);
+ greeter = null;
+ service = null;
+ System.gc();
+ System.gc();
+ System.gc();
+ assertEquals("Hello, finally!", r1.get().getResponseType());
+ }
@Test
public void testAsyncPollingCall() throws Exception {