On Oct 26, 2009, at 10:43 AM, Quintin Beukes wrote:
Hey, Lets say I have 3 EJB JARs, A, B and C. A is independant. B depends on A. C depends on B. So from parent to child it is: A->B->C. What happens when I undeploy B and immediately redeploy it? How does OpenEJB/Geronimo handle this, and what if instances of B's EJBs were already injected into C's EJBs? Can this happen transparently? We can assume that the redeploy does not change any of the @Local or @Remote interface APIs - in such a case a larger redeploy would be done in any case.
There's a redeploy command, which, if applied to a plugin X, will stop plugins that depend on it, keeping track of what got stopped, undeploy X, deploy the new X, and start the stuff that got stopped. However, if you undeploy X that will stop all the dependencies and deploying new-X will not start them again.
I don't know how reliable this is, but IIUC the code is all there in SimpleConfigurationManager and possibly KernelConfigurationManager.
So, in your case, if you redeploy B, C will get stopped while B is being undeployed/deployed and then restarted, at which point it will pick up new injected ejbs from A and B.
I'm not sure how these references are handled with the proxies, and want to know how I should set up my "minor revision" upgrade procedures.
Please try this out in a real world situation and let us know how well it works.
thanks david jencks
Q Quintin Beukes
