Igor, I'm a bit concerned that the engine would be using an interfaces which gives the impression of delivering a particular version of a configuration when the current configuration providers would not support this behaviour and would ignore the version stamp. Wouldn't it be better to build versioning into the current configuration providers for consistency?
Also, I'm confused by your statement:: >Engine calls getConfig() like right now since AxisEngine doesn't call getConfig(). The EngineConfiguration is passed as a parameter on the constructor and later the engine asks for specific Handlers etc. from the EngineConfiguration. Your scheme would, I think, require the version stamp to be passed in on each of these methods. A better approach may be to supply a 'frozen' engine configuration instead of a version stamp. The 'frozen' version would be an EngineConfiguration which could, for example, keep a reference to the original and use some kind of copy on modification scheme (or alternatively clone when the 'frozen' version is created, but that would burn pathlength in the normal case of an infrequently-changing configuration). Glyn