Coz tedy mimo jine znamena, ze neni jasne, jak se JVM zachova, pokud bude mit struktura ClassLoaderu hodne nechutnou podobu - ClassLoader v ClassLoaderu v ClassLoaderu a teprve v tech treti urovni bude nacitana knihovna, pricemz pri kazdem redeployi se zahodi ty druhourovnove ;-)

Nemyslim ze to je jasne... Staci pozriet do zdrojakov a je to jasne...:-) Vsetko podla hesla: Najlepsia dokumentacia je kod samotny... :-)

Ale podme spat k veci:
Z redeployom je problem takmer vsade tomcat,oc4j,wls,... Nie je to problem servera ako takeho, ale javy samotnej. Nie je zial mozne donutit javu aby unloadla nativnu kniznicu nahratu v nejakom classloadery. Avsak: pokial gc uprace dany classloader, tak sa aj nativna kniznica uprace (unloadne) korektne. Na toto sa mozete spolahnut (teda aspon podla zdrojakov). Problem je avsak v tom ze v jave nemate na 100% zarucene ze ked nieco nie je referencovane tak Kedy sa to uprace. A tu je jadro problemu... :(

Ale ak by vam to vadilo tak mozno by slo ze by ste si urobili vlastnu implementaciu runtime-u, upravit si gc a woalla vynajdete Java RTS..."0

Este 2 zaujimave pikosky bokom od hlavneho problemu povodneho tazatela ohladom JNI: - nativnu kniznicu musite loadovat v triede v ktorej sa nachadzaju nativne metody v nej definovane... Skoda, stacilo by keby bola len poziadavka na ten isty classloader, nie tu istu triedu :( - Nemozete mat 2 web/ejb aplikacie ktore pouzivaju jednu nativnu kniznicu bez toho aby ste danu triedu ktora obsahuje nativne metody dali o classloader vyssie... :-((

Zial s realnym pouzitim JNI v jave to nie je az take ruzove ako to hlasaju marketingove materialy...

A preto... kodujte cisto.. 100% pure java... :-)))


Nechcete to nekdo testnout? ;-)

Odpovedet emailem