[jbossws-commits] JBossWS SVN: r10821 - stack/native/branches/ropalka/modules/core/src/main/java/org/jboss/ws/core/client/transport.
jbossws-commits at lists.jboss.org
jbossws-commits at lists.jboss.org
Thu Oct 1 11:58:58 EDT 2009
Author: alessio.soldano at jboss.com
Date: 2009-10-01 11:58:57 -0400 (Thu, 01 Oct 2009)
New Revision: 10821
Modified:
stack/native/branches/ropalka/modules/core/src/main/java/org/jboss/ws/core/client/transport/NettyClient.java
stack/native/branches/ropalka/modules/core/src/main/java/org/jboss/ws/core/client/transport/NettyTransportHandler.java
Log:
[JBWS-2753] Survive closed connections not yet evicted from cache
Modified: stack/native/branches/ropalka/modules/core/src/main/java/org/jboss/ws/core/client/transport/NettyClient.java
===================================================================
--- stack/native/branches/ropalka/modules/core/src/main/java/org/jboss/ws/core/client/transport/NettyClient.java 2009-10-01 14:01:17 UTC (rev 10820)
+++ stack/native/branches/ropalka/modules/core/src/main/java/org/jboss/ws/core/client/transport/NettyClient.java 2009-10-01 15:58:57 UTC (rev 10821)
@@ -28,6 +28,7 @@
import java.net.URL;
import java.nio.channels.ClosedChannelException;
import java.util.Map;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@@ -113,6 +114,26 @@
*/
public Object invoke(Object reqMessage, String targetAddress, boolean oneway, Map<String, Object> additionalHeaders, Map<String, Object> callProps) throws IOException
{
+ try
+ {
+ return invokeInternal(reqMessage, targetAddress, oneway, additionalHeaders, callProps);
+ }
+ catch (ClosedChannelException cce)
+ {
+ if (NettyTransportHandler.getHttpKeepAliveSet())
+ {
+ log.info("Retrying with a new connection..."); //because using keep-alive connections it's possible to try re-using closed connections before they've been evicted
+ return invokeInternal(reqMessage, targetAddress, oneway, additionalHeaders, callProps);
+ }
+ else
+ {
+ throw cce;
+ }
+ }
+ }
+
+ private Object invokeInternal(Object reqMessage, String targetAddress, boolean oneway, Map<String, Object> additionalHeaders, Map<String, Object> callProps) throws IOException
+ {
URL target;
try
{
@@ -153,7 +174,17 @@
//Get the response
Future<Result> futureResult = responseHandler.getFutureResult();
- Result result = timeout == null ? futureResult.get() : futureResult.get(timeout, TimeUnit.MILLISECONDS);
+ Result result = null;
+ try
+ {
+ result = timeout == null ? futureResult.get() : futureResult.get(timeout, TimeUnit.MILLISECONDS);
+ }
+ catch (ExecutionException ee)
+ {
+ //unwrap ExecutionException
+ Throwable t = ee.getCause();
+ throw t != null ? t : ee;
+ }
resHeaders = result.getResponseHeaders();
Object resMessage = oneway ? null : unmarshaller.read(result.getResponse(), resHeaders);
@@ -205,7 +236,7 @@
transport.finished(resHeaders);
}
}
-
+
private static SslHandler getSSLHandler(URL target, Map<String, Object> callProps) throws IOException
{
SslHandler handler = null;
Modified: stack/native/branches/ropalka/modules/core/src/main/java/org/jboss/ws/core/client/transport/NettyTransportHandler.java
===================================================================
--- stack/native/branches/ropalka/modules/core/src/main/java/org/jboss/ws/core/client/transport/NettyTransportHandler.java 2009-10-01 14:01:17 UTC (rev 10820)
+++ stack/native/branches/ropalka/modules/core/src/main/java/org/jboss/ws/core/client/transport/NettyTransportHandler.java 2009-10-01 15:58:57 UTC (rev 10821)
@@ -313,7 +313,7 @@
}
}
- public boolean getHttpKeepAliveSet()
+ public static boolean getHttpKeepAliveSet()
{
return keepAliveProp;
}
More information about the jbossws-commits
mailing list