wtorek, marca 04, 2008

JBoss rozrabiaka ;-)

Ciekawa obserwacja z pola zmagań z JBoss'em w wersji 4.0.GA, choć może dotyczyć też innych wersji.

Jeżeli w trakcie finalizacji obiektu [czyli momentu gdy finalizer wywoła metodę finalize() z naszego obiektu] konieczne jest załadowanie jakiejś klasy która teoretycznie jest dostępna dla ClassLoader'a ładującego klasę tworzącą nasz finalizowany właśnie obiekt to leci ClassNotDefFoundError [albo ten drugi ;-) ClassNotFoundError, nie pamiętam :-)].
Co ciekawe, jeżeli później spróbujemy użyć gdzieś tej klasy, to nigdy się to nie uda z racji tego ClassNotFoundError.

Obejściem jest załadowanie klasy jakoś tak wcześniej, rozwiązaniem przepisanie finalize() tak by nie potrzebowało niezaładowanych klas ;-) [ale to nie zawsze będzie możliwe :-)].

Żeby było zabawnie, problem nie występuje na Tomcat'cie, wydaje się też nie występować na Jetty'm :-)


Podobne postybeta
finalize() - do czego służy, a do czego nie i z czym to się je.
Programowanie pomaga :-)
Nieznane ścieżki ClassLoader'a ;-)
Samochód jako zmniejszacz temperatury.... GC i jak to możliwe, że Young Generation może być zbyt duże, strzeż się finalize() i muzyczka :-) Czyli potok świadomości....
Pożar...