diff --git a/src/main/java/com/alipay/remoting/RemotingContext.java b/src/main/java/com/alipay/remoting/RemotingContext.java index 0c3eb829..f7db3dad 100644 --- a/src/main/java/com/alipay/remoting/RemotingContext.java +++ b/src/main/java/com/alipay/remoting/RemotingContext.java @@ -32,7 +32,7 @@ * @author jiangping * @version $Id: RemotingContext.java, v 0.1 2015-9-6 PM5:50:07 tao Exp $ */ -public class RemotingContext { +public class RemotingContext implements Cloneable{ private ChannelHandlerContext channelContext; @@ -251,4 +251,8 @@ public RemotingContext setTimeoutDiscard(boolean failFastEnabled) { this.timeoutDiscard = failFastEnabled; return this; } + + public RemotingContext clone() { + return new RemotingContext(channelContext, new InvokeContext(), serverSide, userProcessors); + } } diff --git a/src/main/java/com/alipay/remoting/rpc/protocol/RpcCommandHandler.java b/src/main/java/com/alipay/remoting/rpc/protocol/RpcCommandHandler.java index 67fe759e..1ba749c6 100644 --- a/src/main/java/com/alipay/remoting/rpc/protocol/RpcCommandHandler.java +++ b/src/main/java/com/alipay/remoting/rpc/protocol/RpcCommandHandler.java @@ -105,7 +105,7 @@ public void run() { logger.debug("Batch message! size={}", ((List) msg).size()); } for (final Object m : (List) msg) { - RpcCommandHandler.this.process(ctx, m); + RpcCommandHandler.this.process(ctx.clone(), m); } } };