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

Reply via email to