Author: alessio.soldano(a)jboss.com
Date: 2009-07-15 09:24:40 -0400 (Wed, 15 Jul 2009)
New Revision: 10323
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/client/NettyClient.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/client/WSResponseHandler.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/backchannel/RMBackPortsInvocationHandler.java
Log:
[JBWS-2554] Waiting for write to be completed (oneway operation), ensuring threadlocals
cleanup, adding missing annotation on RM channel handler
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/client/NettyClient.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/client/NettyClient.java 2009-07-14
17:22:44 UTC (rev 10322)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/client/NettyClient.java 2009-07-15
13:24:40 UTC (rev 10323)
@@ -184,11 +184,12 @@
setActualChunkedLength(request);
setAuthorization(request, callProps);
- writeRequest(channel, request, reqMessage);
+ ChannelFuture writeFuture = writeRequest(channel, request, reqMessage);
if (!waitForResponse)
{
- //No need to wait for the connection to be closed
+ //No need to wait for the connection to be closed, just wait for the write to
be completed.
+ writeFuture.awaitUninterruptibly();
return null;
}
//Wait for the server to close the connection
@@ -256,11 +257,11 @@
return new InetSocketAddress(target.getHost(), port);
}
- private void writeRequest(Channel channel, HttpRequest request, Object reqMessage)
throws IOException
+ private ChannelFuture writeRequest(Channel channel, HttpRequest request, Object
reqMessage) throws IOException
{
if (reqMessage == null)
{
- channel.write(request);
+ return channel.write(request);
}
else
{
@@ -286,13 +287,13 @@
cur = to;
}
//write last chunk
- channel.write(HttpChunk.LAST_CHUNK);
+ return channel.write(HttpChunk.LAST_CHUNK);
}
else
{
request.setHeader(HttpHeaders.Names.CONTENT_LENGTH,
String.valueOf(content.readableBytes()));
request.setContent(content);
- channel.write(request);
+ return channel.write(request);
}
}
}
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/client/WSResponseHandler.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/client/WSResponseHandler.java 2009-07-14
17:22:44 UTC (rev 10322)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/client/WSResponseHandler.java 2009-07-15
13:24:40 UTC (rev 10323)
@@ -31,6 +31,8 @@
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
import org.jboss.netty.handler.codec.http.HttpResponse;
+import org.jboss.ws.core.utils.ThreadLocalAssociation;
+import org.jboss.wsf.common.DOMUtils;
/**
* A Netty channel upstream handler that receives MessageEvent
@@ -78,6 +80,8 @@
}
finally
{
+ DOMUtils.clearThreadLocals();
+ ThreadLocalAssociation.clear();
e.getChannel().close();
}
}
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/backchannel/RMBackPortsInvocationHandler.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/backchannel/RMBackPortsInvocationHandler.java 2009-07-14
17:22:44 UTC (rev 10322)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/extensions/wsrm/transport/backchannel/RMBackPortsInvocationHandler.java 2009-07-15
13:24:40 UTC (rev 10323)
@@ -34,6 +34,7 @@
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.buffer.ChannelBufferInputStream;
import org.jboss.netty.channel.ChannelHandlerContext;
+import org.jboss.netty.channel.ChannelPipelineCoverage;
import org.jboss.netty.channel.ChannelStateEvent;
import org.jboss.netty.channel.ExceptionEvent;
import org.jboss.netty.channel.MessageEvent;
@@ -58,6 +59,7 @@
*
* @since Nov 20, 2007
*/
+@ChannelPipelineCoverage("one")
public final class RMBackPortsInvocationHandler extends SimpleChannelUpstreamHandler
{
private static final Logger LOG =
Logger.getLogger(RMBackPortsInvocationHandler.class);