Lukasz,
this is wrong. Nativ Libraries are reloaded in case a bundle is updated.
Though you need to take care of certain restrictions. Native Libraries
inside a bundle must not be linked to other native libraries that are
inside this or another bundle and may only depent to system libraries.
This is due to the way nativ library re-loading is handled. Actually the
original nativ bundle is kept, and the second one is "re-named" (if I
remember correctly) and that's the main reason why the dependency to
another native library doesn't work.
Neer the less technically speaking the library is "re-loaded" well actually
it's more of a moved into a not accessible space and beeing replaced by
another library.

regards, Achim




2013/6/27 Łukasz Dywicki <[email protected]>

> Jean,
> Native libraries are linked with system classloader thus they are not
> re-loaded even if bundle is updated.
>
> Cheers,
> Lukasz
>
> Wiadomość napisana przez Jean-Baptiste Onofré <[email protected]> w dniu 27
> cze 2013, o godz. 20:56:
>
> > Not sure I follow you:
> >
> > "
> > When a class loaded by a bundle's class loader attempts to load a native
> > library, by calling System.loadLibrary, the findLibrary method of the
> bundle’s class loader must be called to return the file path in which the
> Framework has made the requested native library available. The parameter to
> the findLibrary method is the name of the library in operating system
> independent form, like http. The bundle class loader can use the
> mapLibraryName method from the VM to map this name to an operating system
> dependent name, like libhttp.so.
> > "
> > As we have a classloader per bundle, it's loaded at each bundle startup.
> >
> > Regards
> > JB
> >
> > On 06/27/2013 08:05 PM, Łukasz Dywicki wrote:
> >> Dear all,
> >> As OSGi core spec says - native libraries are loaded once and they are
> >> linked with classloader. Due the fact that bundle classloader only find
> >> the native library for system classloader which performs load the DLL/SO
> >> file is always loaded only once and remains in memory untill JVM
> shutdown.
> >>
> >> For details see OSGi 5 Core Spec section 3.10, especially paragraph
> 3.10.2.
> >>
> >> Czheers,
> >> Łukasz Dywicki
> >> --
> >> [email protected] <mailto:[email protected]>
> >> Twitter: ldywicki
> >> Blog: http://dywicki.pl
> >> Code-House - http://code-house.org
> >>
> >> Wiadomość napisana przez CLEMENT Jean-Philippe
> >> <[email protected]
> >> <mailto:[email protected]>> w dniu 27 cze 2013,
> o
> >> godz. 17:04:
> >>
> >>> From what I understand BundleActivator warns when un bundle is
> >>> started/stopped, which is not exactly the usecase I would like.
> >>>
> >>> The .so lib must be loaded once. The best thing would be to obtain an
> >>> event stating the bundle is installed so I may load the lib.
> >>>
> >>> For the moment I added a class with a static part. I load the lib when
> >>> that class is loaded by the classloader, which is not very good but
> >>> does the job. I also put the bundle as singleton for extra protection.
> >>>
> >>> JP
> >>>
> >>> [@@ OPEN @@]
> >>>
> >>> -----Message d'origine-----
> >>> De : Jean-Baptiste Onofré [mailto:[email protected] <http://nanthrax.net
> >]
> >>> Envoyé : jeudi 27 juin 2013 16:15
> >>> À : [email protected] <mailto:[email protected]>
> >>> Objet : Re: How to call a code only once
> >>>
> >>> Hi JP,
> >>>
> >>> you can control the loading in the BundleActivator.
> >>>
> >>> Regards
> >>> JB
> >>>
> >>> On 06/27/2013 10:45 AM, CLEMENT Jean-Philippe wrote:
> >>>> Dear Karaf,
> >>>>
> >>>> I have a bundle which loads .so libraries. I would like this code to
> >>>> run once. What is the easiest way to do so?
> >>>>
> >>>> Best regards,
> >>>> JP
> >>>>
> >>>
> >>> --
> >>> Jean-Baptiste Onofré
> >>> [email protected] <mailto:[email protected]>
> >>> http://blog.nanthrax.net
> >>> Talend - http://www.talend.com
> >>
> >
> > --
> > Jean-Baptiste Onofré
> > [email protected]
> > http://blog.nanthrax.net
> > Talend - http://www.talend.com
>
>


-- 

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

Reply via email to