Hawlitzek GmbH/ Veröffentlichungen/ Servlets in WebSphere/ Servlet-Debugging/
 

Hawlitzek IT-Consulting GmbH ©Foto Kirsten Literski-Hawlitzek

Servlet-Debugging

Dieser Artikel ist im JavaMagazin 6/01 erschienen. Vielen Dank an den Software & Support Verlag für die Genehmigung zur Veröffentlichung auf dieser Webseite!

Probelauf

Serveranwendungen in VisualAge for Java, Teil2: Test im WebSphere Environment

Die Version 3.5 von IBMs Entwicklungsumgebung VisualAge for Java enthält eine Testumgebung für Servlets, JSPs und EJBs. Im vorigen Heft stellen wir den Servlet-Wizard vor. Den generierten Code werden wir nun im WebSphere Test Environment testen und im dritten Teil der Artikelserie auf den Application Server deployen.

Unser Beispiel besteht aus einer kleinen JavaBean zur Umrechnung von Geldbeträgen mit dem Namen EuroCalc. Sie bezieht einen Geldbetrag und eine Eingangswährung und liefert nach Aufruf von umrechnen() eine Liste von Zielbeträgen. Den Quellcode finden Sie auf der Begleit-CD in diesem Heft. Mit dem Servlet-Wizard generierten wir ein HTML-Formular zur Eingabe eines Betrages samt Währung, ein Servlet das mit Hilfe der EuroCalc-Bean das Ergebnis berechnet und eine JavaServer Page zur Ausgabe des Betrags in verschiedenen Währungen.

WebSphere Test Environment

VisualAge for Java liefert eine abgespeckte Version des IBM WebSphere Application Server mit, die im Werkzeug integriert ist. Dies hat den Vorteil, dass Sie direkt testen können, ohne zuerst den Code packagen und deployen zu müssen. Denn dieser Vorgang nimmt einige Zeit in Anspruch und muss bei jedem gefundenen Fehler wiederholt werden. Im WebSphere Test Environment kann man direkt in den Debugger wechseln und Fehlerquellen leichter analysieren. Haben Sie einen Fehler identifiziert, können Sie ihn häufig direkt im Debugger beseitigen und die Methode noch einmal laufen lassen. Dies spart viel Zeit, denn sonst müssten Sie nicht nur neu kompilieren, packagen, deployen und den Server neu starten, sondern auch die Anwendung wieder bis zu dem Punkt durchlaufen, an der der Fehler aufgetreten ist.


Abbildung 1: WebSphere Test Environment Control Center

Die Testumgebung finden Sie im Menü „Workspace/ArbeitsbereichÞToolsÞWebSphere Test Environment.. .“ (siehe Abbildung 1). Es besteht aus der Servlet Engine, den Einstellungen für den JSP Execution Monitor, einem Namensdienst (für EJBs, Datenquellen etc.) und einem Konfigurator zur Einrichtung von JDBC-Datenquellen.

Uns interessiert zunächst die Servlet Engine. Sie können diese hier starten und stoppen. Per Default ist sie so eingerichtet, dass die auf Port 8080 arbeitet. Die URL für ein Servlet mit dem Namen de.hawlitzek .jm.test.SimpleServlet lautet also: http://localhost:8080/servlet/de.hawlitzek.jm.test.SimpleServlet. Bevor Sie das im Browser ausprobieren, müssen Sie die Servlet Engine starten. Dabei sollten Sie nicht vergessen, den CLASSPATH der Servlet Engine so einzustellen, das alle Klassen ihres Projektes gefunden werden können. Ansonsten erhalten Sie einen "Error 500" mit einer ClassNotFoundException im Browser.

Mehr zum Thema Konfiguration

Servlets debuggen

Möchten Sie beispielsweise ein Servlet bei jedem Request stoppen, können Sie in der doGet() bzw. doPost()-Methode einen Breakpoint setzen. Im Debugger können Sie die Anfrage analysieren, Ausdrücke überwachen und vieles mehr (siehe Abbildung 2). Falls etwas nicht stimmt können Sie die Variablenbelegung ändern und sogar den Quelltext ändern. Nach einer solchen Änderung wird die Methode neu ausgeführt. Dies funktioniert natürlich nicht nur bei Servlets, sondern bei allen Klassen (inklusive EJBs), jedoch nicht bei JSPs.


Abbildung 2: VisualAge Debugger

JavaServer Pages

Bei JSPs gestaltet sich das Debugging etwas schwieriger. Da die JSPs als Textdateien vorliegen (nicht im Code-Repository) und erst bei der ersten Ausführung kompiliert werden, hat VisualAge nicht so weitreichende Möglichkeiten auf Quelltext-Ebenen zu debuggen.

Es gibt nun zwei Möglichkeiten. Entweder man lässt VisualAge das Servlet, das aus der Kompilation der JSP entsteht, in das Repository generieren und stoppt bei dessen Ausführung (siehe JSP-Optionen in Abbildung 1). Hier hat man alle Möglichkeiten des Debuggers wie den Servlets auch. Allerdings lässt sich das generierte Servlet nicht so gut lesen wie die ursprüngliche JavaServer Page. Und wenn Sie im Debugger einen Fehler korrigieren, ändert sich nur das Servlet, aber nicht die ursprüngliche JSP.

Eine andere Möglichkeit ist der JSP Execution Monitor als weiteres Tool der WebSphere-Testumgebung. Dieser erlaubt zwar nicht die Änderung des Codes, aber man sieht auf einen Blick, das Original-JSP, das generierte Servlet und die erzeugte HTML-Seite. Man kann hier Zeile für Zeile durch die JSP steppen (siehe Abbildung 3).


Abbildung 3: JSP Execution Monitor

Den JSP Execution Monitor muss man nicht explizit starten, er öffnet sich bei jeder geladenen JSP automatisch, wenn man ihn im Control Center aktiviert (Abbildung 1). Allerdings ist dieses Verhalten nicht ganz stabil, so dass ich das Einspielen von Patch 2 unbedingt empfehle.

Beispiel

Nachdem Sie die EuroCalc-Bean aus dem Beispiel des letzten Heftes (oder von der Begleit-CD) importiert und Servlet, HTML-Seite und JSP generiert haben, können Sie diese nun zum Laufen bringen. Starten Sie das WebSphere Test Environment und nehmen Sie das Projekt in den CLASSPATH der Servlet Engine auf. Wenn Sie möchten können Sie unter den "JSP Execution Monitor Options" auch dieses Werkzeug einschalten. Starten Sie nun die Servlet Engine.
Das HTML-Formular EuroCalcServletInput.html und die JSP EuroCalcServletResults.jsp sollten sich unter <IBMVJava>\ide\project_resources\IBM WebSphere Test Environment\hosts\default_host\default_app\web befinden.
Starten Sie nun einen beliebigen Webbrowser und geben Sie folgende URL ein: http://localhost:8080/ EuroCalcServletInput.html. Nun können Sie einen Betrag und eine Euro-Währung (3-Buchstabenkürzel: EUR, DEM, ATS, FRF...) angeben. Beim Drücken auf den Submit-Knopf wird das Servlet aufgerufen, das die Umrechnung erledigt. Die Ausgabe wird an die JSP delegiert. Die Ausgabe sehen Sie in Abbildung 4. In einer richtigen Anwendung sollte die JSP und das Eingabeformular natürlich noch etwas hübscher gemacht werden.


Abbildung 4: HTML-Formular und Ausgabe-JSP

Fazit

Mit dem WebSphere Test Environment hat man ein sehr nützliches Tools zum Testen von Servlet und JSPs. Darüber hinaus ist es auch die Basis für den Test von Enterprise JavaBeans. Im dritten und letzten Teil der Serie zum Thema Servlets und JSP unter VisualAge und WebSphere werden wir das Deployment im Application Server zeigen.

Literatur

 

[FH1] Servlets in VisualAge und WebSphere - Teil 1, Florian Hawlitzek, Java Magazin 5/01

 

[FH3] Servlets in VisualAge und WebSphere - Teil 3, Florian Hawlitzek, Java Magazin 7/01

Konfiguration für Fortgeschrittene

Die Administrationsoberfläche der WebSphere-Testumgebung ist deutlich besser geworden als in der Vorversion. Allerdings kann man bei weitem noch nicht so viel grafisch konfigurieren wie in der Konsole des "echten" Applikationsservers. Viele Parameter lassen sich aber in einigen etwas versteckten XML-Dateien ändern.

Die Einstellung des Servlet-Engine-Port kann man in einer etwas versteckten Datei ändern: <IBMVJava>\ide\project_resources\IBM WebSphere Test Environment\properties\default.servlet_engine. Dort finden sind auch Einstellungen zu den Web-Applikationen, einer Art logischen Server innerhalb des Applikationsserver.

Jede Web-Applikation hat eine eigene Konfigurationsdatei. Die des Standardservers "default_app" findet sich unter <IBMVJava>\ide\project_resources\IBM WebSphere Test Environment\hosts\default_host\default_app\servlets\default_app.webapp.

Hier kann man Servlets registrieren, mit einem logische Namen versehen (für einfachere URL), initParameter setzen. Außerdem wird hier der verwendete JSP-Compiler eingestellt, den man je nach gewünschter JSP-Version wechseln kann.

Sie können jedoch auch eigene Web-Applikationen anlegen. Dies empfiehlt sich bei jeder größeren Anwendung, da man so die zugehörigen Pfade in der Entwicklungs- und Laufzeitumgebung vereinheitlichen kann und alle Parameter, die man zum späteren Deployment braucht, bereits an einer Stelle hat.

Die Konfiguration ist in der Online-Dokumentation eigentlich recht gut beschrieben, wenn man weiß, wonach man suchen muss. Probieren Sie es unter dem Stichwort "web application" des WebSphere Test Environments.
Zurück zum Text

Fortsetzung des Artikels

 

© 2006 Hawlitzek IT-Consulting GmbH,
Marketing&Design Kirsten Literski-Hawlitzek

Seitenanfang

Hawlitzek GmbH
Die Gründer
Dienstleistungen
Java Downloads
Vorträge
Veröffentlichungen
Kontakt
International
Sitemap