Sylvain Wallez wrote:
Unico Hommes wrote:
That was one of my questions also. I have not had time to look at Spring framework so bare with me. One of the issues we currently have with ECM is that it does not do shutdown in order based on dependency information. At several places this leads to errors when component A that relies on component B to do work during its shutdown fase finds component B already was destroyed.
Interesting problem. Is it in Cocoon?
Yes. An example is StoreEventRegistry in eventcache block where the registry hands its state to a Store component upon disposal. I've seen other instances in Cocoon where this sometimes happens involving SourceResolver.
Does Spring handle this case?
Don't know, but it theoretically has all the informations in his hand to do it as it manages all the components (ECM could also, but this is more tricky to implement in a lookup-based system). However the relations between components can form a cyclic graph, in which case determining the order can be difficult.
Fortress handles this exactly the way you describe. However it pertinently forbids cyclic dependencies which means it can always determine the shutdown order. When working on Fortress migration in the old 2.2 branch there were one or two cases where we had to omit the dependency information because it would otherwise detect a cyclic dependency. But it didn't create much of a problem because omiting dependency information in Fortress does not imply the dependency cannot looked up.
-- Unico
