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.sha
./debug.shJBoss 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.