Hi, everyone, My apologies for the delay in responding to the questions. I was offline for a few days :-( and am in the process of catching up!
There was a question whether the message context serialization is configurable - in other words, can the behaviour be switched off if it is not wanted? The answer is that the message context serialization must be explicitly invoked in order for save/restore activity to take place. During normal message processing, no message serialization takes place. There is one spot that where the normal message processing is affected, where the AxisEngine calls a MessageContext.activate() method. While this is implemented to be a quick turnaround with a check on a flag, it does add overhead of a method call. For performance considerations, after thinking about how MessageContext serialization has been used and can be used by a WS-RM layer, I think this extra call can be removed from the AxisEngine and shifted to the code that invokes the MessageContext serialization. I will work on getting this change implemented. Just as a note: the activate() method in the MessageContext is used to finish getting a restored MessageContext linked back into the full object graph that makes up a complete MessageContext on the engine where the MessageContext is restored. This step is needed because when a MessageContext is saved, only a subset of information from the full object graph is actually saved. I'm going to post a separate note that explains how the object graph is handled during a save and a restore. The MessageContext serialization is part of some performance scenarios that my company is doing, which should provide some useful information on improving the implementation for Axis2. Ann WebSphere Development, Web Services Engine IBM
