13 stycznia 2007

Jeśli GlassFish v2 to NetBeans IDE 5.5.1

Wszystko zaczęło się od informacji jaką znalazłem we wpisie All good things come to an end...., gdzie przeczytałem, że NetBeans (NB) 5.5 był rozwijany dla GlassFish (GF) v1, a możliwość pracy z GF v2 była jedynie szczęśliwym przypadkiem. Oczywiście od wersji GF v2b26 rozpoczęły się problemy i ostatnia moja próba zademonstrowania aplikacji Java EE podczas III spotkania Warszawa JUG, którą zbudowałem w NB i próbowałem uruchomić na GF v2b30 zakończyła się znajomym stosem wywołań (ang. stack trace).

Nie dawało mi to spokoju i przeświadczony brakiem funkcjonalności tworzenia aplikacji Java EE w NetBeans 6.0 nawet nie próbowałem ich integracji (nie wiedziałem o istnieniu wersji 5.5.1). Po prostu założyłem, że nie działają i nie chciałem tracić czasu. Kilka dni temu wyczytałem, gdzieś, że tak jednak nie jest. Pobrałem NB 6.0 Daily Build, zainstalowałem i...po chwili mogłem uruchomić aplikację, którą miałem uruchomić na spotkaniu Warszawa JUG (!)

Podczas uruchomienia aplikacji dowiedziałem się kolejnej rzeczy o DI (ang. dependency injection) - wstrzeliwaniu zależności - w Java EE 5. Nie ma możliwości udekorowania strony JSP tak, aby mogła korzystać z DI, np. do wstrzelenia EJB. Sądziłem, że skoro JSP to ostatecznie servlet to i DI będzie działało. Myliłem się. Nie znalazłem jeszcze niczego w specyfikacji EJB3, Java EE 5, czy JSP 2.1, co potwierdziłoby takie działanie. Zdobyłem się na własną interpretację - strona JSP staje się servletem jako wynik wywołania JspServlet, który domyślnie przypisany jest do rozszerzenia *.jsp. W ten sposób wszystkie pliki jsp w aplikacji internetowej trafiają do servletu JspServlet, a po transformacji do servletu wywoływana jest metoda service(). W ten sposób kontener już nie uczestniczy w przetwarzaniu zlecenia i stąd brak DI.

Wracając do współpracy NB z GF, we wspomnianym wpisie (All good things come to an end....) dowiedziałem się o istnieniu wsparcia dla GFv2 w NB 5.5.1. W komentarzu do tego wpisu pojawił się namiar na kolejny - NetBeans Version for WSIT in GlassFish, który dokładnie opisywał ostatnią dostępną konfigurację - NB 5.5.1 Daily Build oraz GF v2b31. Pobrałem, zainstalowałem i działa!

Kilka cennych informacji o współpracy NB z GF na GlassFish Project - NetBeans IDE integration.

Ogłoszenie integracji między GF v2 a NB 5.5.1 również na Use NetBeans 5.5.1 when working with GlassFish v2. Wydaje się być najwłaściwszym miejscem, od którego powinienem zaczać, które z kolei wymienia wyżej wymienione wpisy.