piątek, 1 sierpnia 2008

zdalne debugowanie aplikacji na serwerze aplikacyjnym JBoss

Istnieją jeszcze starej daty programiści którzy lubią pracę z konsolą. Nie uruchamiają oni serwerów aplikacyjnych z poziomu Eclipse, korzystają za to z terminala. Zaliczam się do nich i ja. Podejście takie ma jedną zasadniczą wadę. W Eclipse, aby uruchomić serwer aplikacyjny w trybie debug wystarczy na zakładce Servers kliknąć odpowiednią ikonkę. Z poziomu konsoli jest nieco trudniej. Ale tylko troszeczkę...

Ręczne uruchamianie serwera w trybie debug może się także przydać przy debugowaniu serwera uruchomionego na innym komputerze, niż komputer programisty. Instrukcję jak to zrobić, na przykładzie Eclipse 3.4.0 i serwera JBoss 4.0.5.GA przedstawiam poniżej.

W przykładzie, korzystam z aplikacji akwarium, którą od czasu do czasu posiłkuję się na blogu.

Najpierw zajmę się JBossem. W katalogu bin znajduje się plik run.sh. Kopiuję go na debug.sh. Na początku pliku dodaję:

JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"

To polecenie modyfikuje zmienną JAVA_OPTS, której zawartość dalej w skrypcie staje się parametrami uruchomieniowymi wirtualnej maszyny (JVM) z którą wystartuje serwer. Dobrze jest zapamiętać wartość wpisaną jako address i ustawić suspend=n. W przeciwnym wypadku JBoss nie uruchomi się dopóki nie podłączymy się do niego z IDE.

W JBossie to już wszystko. Czas na Eclipse.

W klasie AquariumManagerImpl ustawiam pułapkę, klikając na lewym marginesie.



Tutaj zatrzyma się aplikacja aby umożliwić śledzenie jej wykonania krok po kroku.

Następnie wybieram z menu Debug pozycję Debug Configurations....




Wybieram z listy po lewej stronie Remote Java Application podając odpowiedni port i nazwę.



Klikam Apply i Debug. Wyskoczy błąd, ponieważ serwer nie jest jeszcze włączony.

Czas zatem go uruchomić, tym razem nie poleceniem
./run.sh
a
./debug.sh

JBoss powienien wypluć z siebie:
Listening for transport dt_socket at address: 8787

Następnie, w Eclipse z menu Debug wybieram pozycję aquarium - debug.

Wchodzę na stronę:
http://localhost:8080/aquarium/info.htm.
Strona się nie ładuje, przechodzę do Eclipse. Zatwierdzam zmianę perspektywy i już mogę przechodzić kod aplikacji linijka po linijce za pomocą klawisza F6
F8 natomiast wznawia dalszy bieg programu.

Brak komentarzy: