Hi,

I came across a problem related to class loading in SCR and before trying to fix this I would get some feedback if this is really a bug (see FELX-624).

Now, the problem is as follows - we have three bundles.
Bundle C : Provides a service for SERVICE_X which is registered through SCR.

Bundle A : Provides an abstract class AbstractClass that has a bind and unbind method for SERVICE_X. Therefore bundle A imports this service.

Bundle B : Provides a component COMPONENT_Y through SCR which inherits from AbstractClass from Bundle A. The class for COMPONENT_Y does nothing by itself with SERVICE_X, so there is no import and no import statement required for bundle B for SERVICE_X.

All bundles can be deployed and resolved, but when starting bundle B, there is a ClassNotFoundException as the SCR implementation searches for a bind method with SERVICE_X as the parameter. The SCR implementation (DependencyManager#734) uses the classloader from bundle B to load the parameter class. In this case this is SERVICE_X which is not visible for the classloader of bundle B.

So the question is, should there be a more clever search algorithm to resolve the parameter class? Or is this such an obscure use case that rather the "workaround" of adding an import statement to SERVICE_X in bundle B should be used?

Please note that we ran into this problem several times in the past, but never had the time to follow up on it and always used the workaround. We work with several abstract classes providing basic service functionality comming from a "common" bundle.

Carsten
--
Carsten Ziegeler
[EMAIL PROTECTED]

Reply via email to