Glyn, That is right engine does not call getConfig, although it does config.getHandler() for instance, so that can be easily replaced with getConfig(versionStamp).getHandler().
I was thinking to establish an EngineConfigurationProvider interface that would define getConfig(), getConfig(versionStamp) and getCurrentVersionStamp() methods. All config providers would implement it in addition to EngineConfiguration as necessary (i.e. if no versioning, then simply implement both by the same class). You're right, because of internal engine/handler dependencies we won't get away by simply enhancing the config provider/engine relationships. We'd have to add a version stamp parameter to getService, get... Methods of the AxisEngine, and also provide getConfigVersionStamp and setConfigVersionStamp on the MessageContext. That way no one will be misguided and won't make mistakes by getting head version all the time from the Engine. Note that this concerns only Engine, if one calls getService, etc. on the EngineConfiguration, then it's all good: version has already been resolved by the getConfig call. Actually the point is to get that version stamp just when the request arrives and then it's all good performance- and resource-wise... Another important element is to allow config providers to implement or not to implement versioning. Let's say we do it in Axis code and won't let config providers take control, then how can we make sure it's the best versioning implementation for any Db or any directory? That'll be hard. We can provide some default implementation for FileProvider over WSDDDeployment. That'll give it a good example on how to plug such feature in. We can leave SimpleProvider without versioning for that sake. -- Igor Sedukhin .. ([EMAIL PROTECTED]) -- (631) 342-4325 .. 1 CA Plaza, Islandia, NY 11788 -----Original Message----- From: Glyn Normington [mailto:[EMAIL PROTECTED]] Sent: Monday, February 04, 2002 10:43 AM To: [EMAIL PROTECTED] Subject: RE: Subsystem responsibilities: WSDD 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