Hi Charles,

this depends on the resolver, if the fragment bundle is "started" or
resolved before the host bundle it is
being attached because the resolver already knows that there is a
fragment bundle available. (Especially with felix AFAIR)
If your host bundle is already started your fragment won't get
attached to it since it is to late.

If you're using features.xml you need to place your fragment bundle
before the host bundle,
if you're droping those bundle in the deploy folder you need to make
sure the fragment bundle is dropped in that folder
before your host bundle.
if you use the startup properies make sure your fragment bundle is
also "started" earlier than the host bundle.

There has also been a discussion around this issue at the felix list:

http://old.nabble.com/Moving-fragment-to-Resolved-state-in-fileinstall-watched-directory--tp32052770p32089187.html

regards, Achim

2011/8/11 Charles Moulliard <[email protected]>:
> Hi,
>
> In some random case, a fragment bundle is not attached to its host. No
> error is reported on the console or in the log. If I do a "refresh
> Host_bundle_id fragment_bundle_id", then I can attach the fragment.
>
> Does anybody knows the reason of this issue and How to solve it ?
>
> [ 200] [Installed  ] [            ] [       ] [   60]
> servicemix-antlr-hibernate-hql (1.0.0) // fragment bundle not attached
> to 238 = Antlr
> [ 205] [Active     ] [            ] [       ] [   60] Technical Objects 
> (1.1.1)
> [ 207] [Active     ] [            ] [       ] [   60] middleware-utils (1.1.2)
> [ 219] [Active     ] [            ] [       ] [   60] Business Objects (1.4.0)
> [ 220] [Active     ] [            ] [       ] [   60] Services
> Signatures (1.3.0)
> [ 222] [Installed  ] [            ] [       ] [   60] Service CAN Data (1.0.0)
> [ 223] [Installed  ] [            ] [       ] [   60] Service Fleet
> Management (1.3.0)
> [ 224] [Installed  ] [            ] [       ] [   60] Process Store
> CAN Event (1.0.0)
> [ 227] [Installed  ] [            ] [       ] [   60] batch conversion
> of legacy customers (1.2.0)
> [ 228] [Installed  ] [            ] [       ] [   60] batch conversion
> of legacy vehicles (1.2.0)
> [ 238] [Active     ] [            ] [       ] [   60] Apache
> ServiceMix Bundles: antlr-2.7.7 (2.7.7.2)
>
> Moreover sometimes when executing the command :
>
> karaf@root> refresh 238 200
>
> I getr the error :
> karaf@root> ERROR: Bundle org.springframework.osgi.extender [62] Error
> stopping bundle. (java.lang.NoClassDefFoundError:
> org/osgi/framework/ServiceRegistration)
> java.lang.NoClassDefFoundError: org/osgi/framework/ServiceRegistration
>        at 
> org.springframework.osgi.util.OsgiServiceUtils.unregisterService(OsgiServiceUtils.java:41)
>        at 
> org.springframework.osgi.extender.internal.support.NamespaceManager.unregisterResolverService(NamespaceManager.java:195)
>        at 
> org.springframework.osgi.extender.internal.support.NamespaceManager.destroy(NamespaceManager.java:223)
>        at 
> org.springframework.osgi.extender.internal.activator.ContextLoaderListener.shutdown(ContextLoaderListener.java:547)
>        at 
> org.springframework.osgi.extender.internal.activator.ContextLoaderListener.stop(ContextLoaderListener.java:431)
>        at 
> org.apache.felix.framework.util.SecureAction.stopActivator(SecureAction.java:651)
>        at org.apache.felix.framework.Felix.stopBundle(Felix.java:2210)
>        at org.apache.felix.framework.Felix$RefreshHelper.stop(Felix.java:4554)
>        at org.apache.felix.framework.Felix.refreshPackages(Felix.java:3571)
>        at 
> org.apache.felix.framework.PackageAdminImpl.run(PackageAdminImpl.java:365)
>        at java.lang.Thread.run(Thread.java:636)
> Caused by: java.lang.ClassNotFoundException:
> org.osgi.framework.ServiceRegistration not found by
> org.springframework.osgi.core [59]
>        at 
> org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:812)
>        at org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:72)
>        at 
> org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1806)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
>        ... 11 more
>
> Regards,
>
> Charles Moulliard
>
> Apache Committer
>
> Blog : http://cmoulliard.blogspot.com
> Twitter : http://twitter.com/cmoulliard
> Linkedin : http://www.linkedin.com/in/charlesmoulliard
> Skype: cmoulliard
>



-- 
--
*Achim Nierbeck*


Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/>
Committer & Project Lead
blog <http://notizblog.nierbeck.de/>

Reply via email to