I suspect this is adequate for the problem user Dan has identified: the novice Java developer who doesn't understand classpaths. I suspect that we will not come up with a bullet-proof solution for advanced users who experiment with tricky techniques for faulting in classes. I would err on the side of keeping it simple.

-Rick

Francois Orsini wrote:

This issue reminds me of the database deadlocks issue - you can't completely get rid of them but you can do a good job at preventing/reducing them...

I think it has been proposed before but can't we have the very first class of the network Client driver and Server check for a legitimate/compatible version of the common classes (package) via a Version class and a static method being passed the caller's version number - this can be done with a static block early on on the ClientDriver class for instance (for the client part) - The common Version class could have a compatibilty table (matrix) if we need more advanced compatibility check computations...If the common package is compatible (based on the compatibility table) then all is fine, otherwise a (runtime) exception is raised in ClientDriver. I do _not_ think we need to check for all interfaces as long as we preliminary checked on Version.checkIfCompatible(versionNumber) early on via the static block - I think we could assume that if you get the proper Version class from the common package and it is compatible, then the rest of the common interfaces should be compatible as well since they would get loaded in the same order as the common Version class which has been identified as (version) compatible. Sure people could come up with twisted scenarios shooting themselves in the foot, but at the end I think we want to be able to address the majority of the cases/situations...just some more thoughts...

--francois


Reply via email to