From: Manuel S. P. <san...@di...> - 2004-05-27 17:36:09
|
Hi 2 everybody!! I've been squeezing my brains with a deadlock until I've finally found out why it happened. The code is a bit hard to understand, so I'll simplify it a bit. We 've got bundle A and B. Bundle B has got a class C, which he exports, and bundle A imports it. Suppose A is already started. Now we start bundle B. In its activator, it contacts bundle B via RMI and tells him to instantiate class C (by reflection). The problem is that while bundle B is starting, bundle A cannot instantiate classes exported by bundle B. Usually, this is not a problem, because the call just waits until bundle B finishes starting. But in this case, a deadlock occurs, because bundle B won't finish until bundle A instantiates that class, and A won't instantiate that class until bundle B finishes. I think it has to do with the fact that while a bundle is STARTING it is not RESOLVED nor INSTALLED, and therefore no classes can be exported. Am I right? I mean, is this "my fault" in the sense that the spec states that the platform should act in this way, or is it a bug? Thanks!! Manuel Santillan |