diff --git a/ejb3/src/main/java/org/jboss/as/ejb3/remote/protocol/versionone/MethodInvocationMessageHandler.java b/ejb3/src/main/java/org/jboss/as/ejb3/remote/protocol/versionone/MethodInvocationMessageHandler.java
index 24bad9f..7c8057a 100644
--- a/ejb3/src/main/java/org/jboss/as/ejb3/remote/protocol/versionone/MethodInvocationMessageHandler.java
+++ b/ejb3/src/main/java/org/jboss/as/ejb3/remote/protocol/versionone/MethodInvocationMessageHandler.java
@@ -199,7 +199,11 @@ public class MethodInvocationMessageHandler extends EJBIdentifierBasedMessageHan
                     Object result = null;
                     SecurityActions.remotingContextSetConnection(channelAssociation.getChannel().getConnection());
                     try {
-                        result = invokeMethod(invocationId, componentView, invokedMethod, methodParams, locator, attachments);
+                        Result res = invokeMethod(invocationId, componentView, invokedMethod, methodParams, locator, attachments);
+                        result = res.result;
+                        // send the context data base
+                        for (Map.Entry<String, Object> entry : res.contextData.entrySet())
+                            attachments.put(entry.getKey(), entry.getValue());
                     } catch (Throwable throwable) {
                         try {
                             // if the EJB is shutting down when the invocation was done, then it's as good as the EJB not being available. The client has to know about this as
@@ -258,7 +262,7 @@ public class MethodInvocationMessageHandler extends EJBIdentifierBasedMessageHan
         return statefulSessionComponent.getCache().getWeakAffinity(sessionID);
     }
 
-    private Object invokeMethod(final short invocationId, final ComponentView componentView, final Method method, final Object[] args, final EJBLocator<?> ejbLocator, final Map<String, Object> attachments) throws Throwable {
+    private Result invokeMethod(final short invocationId, final ComponentView componentView, final Method method, final Object[] args, final EJBLocator<?> ejbLocator, final Map<String, Object> attachments) throws Throwable {
         final InterceptorContext interceptorContext = new InterceptorContext();
         interceptorContext.setParameters(args);
         interceptorContext.setMethod(method);
@@ -309,7 +313,7 @@ public class MethodInvocationMessageHandler extends EJBIdentifierBasedMessageHan
             if (!(component instanceof SessionBeanComponent)) {
                 EjbLogger.EJB3_LOGGER.asyncMethodSupportedOnlyForSessionBeans(component.getComponentClass(), method);
                 // just invoke normally
-                return componentView.invoke(interceptorContext);
+                return new Result(componentView.invoke(interceptorContext), interceptorContext.getContextData());
             }
             final CancellationFlag asyncInvocationCancellationFlag = new CancellationFlag();
             interceptorContext.putPrivateData(CancellationFlag.class, asyncInvocationCancellationFlag);
@@ -317,14 +321,14 @@ public class MethodInvocationMessageHandler extends EJBIdentifierBasedMessageHan
             this.remoteAsyncInvocationCancelStatus.registerAsyncInvocation(invocationId, asyncInvocationCancellationFlag);
             try {
                 final Object result = componentView.invoke(interceptorContext);
-                return result == null ? null : ((Future) result).get();
+                return result == null ? null : new Result(((Future) result).get(), interceptorContext.getContextData());
             } finally {
                 // now that the async invocation is done, we no longer need to keep track of the
                 // cancellation flag for this invocation
                 this.remoteAsyncInvocationCancelStatus.asyncInvocationDone(invocationId);
             }
         } else {
-            return componentView.invoke(interceptorContext);
+            return new Result(componentView.invoke(interceptorContext), interceptorContext.getContextData());
         }
     }
 
@@ -354,6 +358,10 @@ public class MethodInvocationMessageHandler extends EJBIdentifierBasedMessageHan
     private void writeMethodInvocationResponse(final ChannelAssociation channelAssociation, final short invocationId, final Object result, final Map<String, Object> attachments, Method invokedMethod) throws IOException {
         final DataOutputStream outputStream;
         final MessageOutputStream messageOutputStream;
+
+        for (Map.Entry<String, Object> entry : attachments.entrySet())
+            System.out.println(String.format("Key: %s Value: %s", entry.getKey(), entry.getValue()));
+
         try {
             messageOutputStream = channelAssociation.acquireChannelMessageOutputStream();
         } catch (Throwable e) {
@@ -430,4 +438,14 @@ public class MethodInvocationMessageHandler extends EJBIdentifierBasedMessageHan
             return this.currentClassLoader;
         }
     }
-}
+
+    private static class Result {
+        public Object result;
+        public Map<String, Object> contextData;
+
+        public Result(Object result, Map<String, Object> contextData) {
+            this.result = result;
+            this.contextData = contextData;
+        }
+    }
+}
\ No newline at end of file
