Hi Bokie,

I reproduced the problem with config-admin 1.6.0. Are you also using it ?

Anyway, Felix found the root cause: it's because of a duplicate export of
the CM api (org.osgi.service.cm package):

1) config-admin 1.6.0 exports org.osgi.service.cm with version=1.5 (because
it implements the latest enterprise osgi compendium).

2) and dependencymanager core imports the org.osgi.service.cm with the
version range "[1.3,2)", because DM has been compiled with compendium 4.2.0

Now, depending on the start order, we may have the following situation:

- if config-admin is resolved/started *before* dependencymanager, then we
don't have the problem: dependencymanager is wired to the correct
org.osgi.service.cm package with version 1.5 (exported by config-admin
1.6.0).

- but if config-admin is resolved/started *after* dependencymanager, then
we have the problem: that is: dependencymanager bundle is wired to the
wrong 1.4 cm package, exported by the org.osgi.compendium-4.3.1 bundle).

For example, using the following pax-runner command file, I reproduce the
problem:

pax-run.sh  commands.txt

and here is the commands.txt file:

file:bundles/org.apache.felix.gogo.command-0.12.0.jar@1
file:bundles/org.apache.felix.gogo.runtime-0.10.0.jar@1
file:bundles/org.apache.felix.gogo.shell-0.10.0.jar@5
file:bundles/org.apache.felix.webconsole.jar@5
file:bundles/org.apache.felix.gogo.runtime-0.10.0.jar@5
file:bundles/biz.aQute.bndlib-1.43.0.jar@5
file:bundles/org.apache.felix.dependencymanager-3.0.0.jar@5
# start config admin *after* dependencymanager
file:bundles/org.apache.felix.configadmin-1.6.0.jar@5
file:bundles/org.apache.felix.metatype-1.0.7-SNAPSHOT.jar@5
file:bundles/org.apache.felix.dependencymanager.shell-3.0.0.jar@5
file:bundles/test.dm-1.0.jar@5
file:bundles/org.apache.felix.http.jetty.jar@5
file:bundles/org.apache.felix.shell-1.4.3.jar@5
file:bundles/org.apache.felix.dependencymanager.runtime-3.0.0.jar@5
file:bundles/org.osgi.compendium-4.3.1.jar@5
file:bundles/org.apache.felix.bundlerepository-1.6.6.jar@5

now, if we manage to start config-admin before dependencymanager, then it
works:

file:bundles/org.apache.felix.gogo.command-0.12.0.jar@1
file:bundles/org.apache.felix.gogo.runtime-0.10.0.jar@1
file:bundles/org.apache.felix.gogo.shell-0.10.0.jar@5
file:bundles/org.apache.felix.webconsole.jar@5
file:bundles/org.apache.felix.gogo.runtime-0.10.0.jar@5
file:bundles/biz.aQute.bndlib-1.43.0.jar@5
# start config admin *before* dependencymanager
file:bundles/org.apache.felix.configadmin-1.6.0.jar@5
file:bundles/org.apache.felix.dependencymanager-3.0.0.jar@5
file:bundles/org.apache.felix.metatype-1.0.7-SNAPSHOT.jar@5
file:bundles/org.apache.felix.dependencymanager.shell-3.0.0.jar@5
file:bundles/test.dm-1.0.jar@5
file:bundles/org.apache.felix.http.jetty.jar@5
file:bundles/org.apache.felix.shell-1.4.3.jar@5
file:bundles/org.apache.felix.dependencymanager.runtime-3.0.0.jar@5
file:bundles/org.osgi.compendium-4.3.1.jar@5
file:bundles/org.apache.felix.bundlerepository-1.6.6.jar@5


so, shortly speaking: if you really need to use the
org.osgi.compendium-4.3.1 bundle, and if you are also using config-admin
1.6.0, then you have to manage to start the config-admin 1.6.0 bundle
before dependencymanager.

now ...

there is something which is troubling me:

as far as I know, the framework should wire dependencymanager to the "
org.osgi.service.cm" package with the highest exported version (that is:
the one exported by config-admin 1.6.0).

So, I'm not sure why we should really start config-admin first.

The other problem that troubles me is we don't have any problems at all
with equinox (that is: using pax-run.sh --p=equinox commands.txt).

So, I wonder if there is (or not) a problem to be investigated in the
framework ?

Felix, what do you think ?

kind regards;
/Pierre


On Mon, Nov 12, 2012 at 7:24 AM, Felix Meschberger <[email protected]>wrote:

> Hi,
>
> Am 11.11.2012 um 14:26 schrieb bokie:
>
> > Hi,
> >
> > When I deploy the osgi.cmpn-4.3.1.jar file as apposed to
> osgi.cmpn-4.2.0.jar
>
> Is there a reason for deploying this ?
>
>
> > file I get the following exception:
> > org.apache.felix.dm.impl.dependencies.ConfigurationDependencyImpl cannot
> be
> > cast to org.osgi.service.cm.ManagedService
>
> It looks very much there is a duplicate export of the Configuration Admin
> API at two different versions, one from the osgi.cmpn bundle and one from
> the Configuration Admin bundle. These do not seem to be the same (you might
> consider updating the Configuration Admin bundle) and thus the
> Configuration Admin service wires to its own export (because it looks to be
> an older version not implementing the newer version exported by the 4.3.1
> osgi.cmpn bundle). The Dependency Manager bundle wires to the newer API and
> thus these two are not compatible.
>
> Still this exception looks strange.
>
> >
> > Can someone provide some input on this?
>
> See above.
>
> > Should I even be trying to deploy the 4.3.1 version of the cmpn with
> felix
> > 4.0.3?
>
> Good question. The Felix implementations of the OSGi specs usually include
> the respective API and thus the deployment of the osgi.cmpn bundle is not
> required and (as in your case) may even cause trouble.
>
> Regards
> Felix
>
> >
> > Thanks,
> > Bokie
> >
> >
> >
> >
> > --
> > View this message in context:
> http://apache-felix.18485.n6.nabble.com/DependencyManager-osgi-cmpn-4-3-1-tp5000342.html
> > Sent from the Apache Felix - Users mailing list archive at Nabble.com.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to