Tutorial 8 mit Tomcat

Transcription

Tutorial 8 mit Tomcat
Tutorial 8 – v03
Tutorial 8
Eclipse, Tomcat, JDBC, SQLJ, DB2Connect
Copyright © Abt. Computersysteme, Institut für Informatik, Universität Leipzig
1. Einführung
1.1 Übersicht
Es ist ausgesprochen unüblich, die Entwicklung neuer Anwendungen auf dem gleichen Server zu
betreiben, auf dem die Anwendungen später einmal laufen sollen. In einem Unternehmen
unterscheiden wir in der Regel zwischen dem/den Rechner(n) einer Entwicklungsumgebung, auf
denen neue Anwendungen entstehen, und dem/den Rechner(n) einer Produktionsumgebung, auf
denen die Anwendung später einmal laufen sollen.
Entwicklungen erfolgen meistens im Team. Die Entwickler haben jeder einen eigenen leistungsfähigen
Arbeitsplatzrechner, auf dem editiert, kompiliert und getestet wird. Alle Arbeitsplatzrechner sind mit
einem gemeinsamen Entwicklungsserver, dem Repository, verbunden, auf dem Quellcode und
Maschinencode in unterschiedlichen Versionen zentral gespeichert wird. Auf dem Repository-Rechner
laufen Funktionen wie die zentrale Steuerung des Entwicklungsprojektes, Versionsverwaltung,
Backup-Verwaltung, und der Integrations- und Systemtest der von den einzelnen Entwicklern
erstellten Komponenten.
Nach Abschluss einer Entwicklung wird der so entstandene Code in die Produktionsumgebung
exportiert.
(Wir vernachlässigen an dieser Stelle die Tatsache, dass in der Regel nicht in die
Produktionsumgebung, sondern in eine Testumgebung exportiert wird, die in Bezug auf Hard- und
Software der Produktionsumgebung möglichst ähnlich ist).
Die Software der Entwicklungsumgebung sieht ganz anders aus als die Software der
Produktionsumgebung. Als Entwicklungsrechner werden Windows XP/Vista-Rechner oder LinuxRechner eingesetzt. Das Repository befindet sich in der Regel auf einem getrennten Unix, Linux oder
Windows XP/Vista Rechner.
Bei der Produktionsumgebung unterscheiden wir zwischen einer 2-Tier- und einer 3-TierKonfiguration. Bei der 2-Tier-Konfiguration laufen alle Anwendungen auf dem zentralen z/OSRechner. Bei der 3-Tier-Konfiguration läuft ein Teil der Anwendungen (Business Logik) auf einem
getrennten Unix- oder Windows XP Rechner/Server; auf dem z/OS-Rechner befindet sich die zentrale
Datenhaltung (z.B. DB2) und evtl. ein Teil der Anwendungen (z.B. CICS-Programme). Die
Arbeitsplatzrechner der Benutzer der Produktionsumgebung haben in der Regel nur eine geringe
Funktionalität. In vielen Fällen ist dies lediglich ein Browser.
Abbildung 1 zeigt diese Zusammenhänge.
Wir wollen diesen Entwicklungsprozess nachvollziehen. Es soll ein Java-Programm erstellt werden,
welche als Servlet auf eine z/OS DB2-Datenbank zugreifen. Dieses Java-Programm wird in einer
Windows XP/Vista-Entwicklungsumgebung erstellt und soll entweder unter z/OS oder auf einem
Middle Tier-Rechner ausgeführt werden. Im letzteren Fall greifen sie über das Netz auf die z/OS DB2Datenbank zu. Im Falle dieses Tutorials werden wir eine simulierte 3-Tier Umgebung einsetzten (s.
Abbildung 2).
Für den Datenbank-Zugriff existieren vorgefertigte Java-Klassen, die als „Connectoren“ bezeichnet
werden. Wir verwenden zwei unterschiedliche Connectoren: JDBC und DB2Connect. JDBC ist ein
universeller Connector für den Zugriff auf beliebige relationale Datenbanken. Die Universalität hat
ihren Preis; das Leistungsverhalten kann unzureichend sein. DB2Connect ist für die DB2-Datenbank
optimiert und in Produktionsumgebungen häufig die bessere Alternative.
1
Tutorial 8 – v03
Abbildung 1
Als Entwicklungsumgebung (auch als Workbench oder als IDE – Integrated Development Environment
- bezeichnet) verwenden wir das Open Source-Produkt Eclipse . Vergleichbare
Entwicklungsumgebungen existieren von vielen anderen Herstellern. Eclipse hat den Vorteil, dass es
vergleichbar mit Apache – sehr weit verbreitet ist..
In einem späteren Tutorial werden wir eine als WDz (WebSpere Studio for System z) bezeichnete
Eclipse Erweiterung (ein sog. Eclipse Plug-in) einsetzen.
Das vorliegende Tutorial behandelt einen JDBC/SQLJ-Zugriff auf die DB2-Datenbank des z/OSRechners 134.2.205.54 mit Hilfe eines JDBC Connectors. Wir erzeugen eine .class Datei (ein
Servlet), die in einer normalen Java Virtual Maschine (JVM) läuft. Unser Servlet benötigt eine ServletLaufzeitumgebung (Servlet Engine). Wir verwenden hierfür den public Domain Tomcat Web
Application Server.
Das vorliegende Tutorial 8wird durch ein weiteres Tutorial 9 ergänzt, welches WebSphere anstatt
Tomcat als Applikationsserver benutzt.
Aufgabe: Arbeiten Sie das nachfolgende Tutorial durch. Installieren Sie, wie in diesem Tutorial beschrieben,
alle zusätzlichen notwendigen Softwarekomponenten. Diese befinden sich im AFS unter
/afs/informatik.uni-tuebingen.de/ti/client-server/stuff/aufgabe5. Zum Entpacken der Archive kann zum
Beispiel 7-Zip benutzt werden. Das Passwort zum Entpacken der Archive erhalten Sie vorab von Ihren
Tutoren. Für den externen Download eignet sich unter Windows am Besten WinSCP.
2
Tutorial 8 – v03
1.2 Aufgabenstellung
Die beiden vorliegenden Tutorials (Tutorials 8 und 9) ermöglichen es, die Infrastruktur für eine eBusiness Anwendungsumgebung einzurichten. Die Präsentationslogik und Businesslogik ist in einem
Servlet enthalten. Das Servlet greift über Konnektoren und das Internet auf eine DB2-Datenbank zu,
die auf dem z/OS-Rechner 134.2.205.54 bereits installiert ist.
Abbildung 2
Die oberste der drei Komponenten von Abbildung 2 zeigt die Testumgebung, die in diesem und dem
nächsten Tutorial entwickelt wird. Hierbei greift das Servlet über einen JDBC-Konnektor auf die DB2Datenbank zu. Diese Konfiguration ist leicht zu einer echten 3-Tier-Konfiguration erweiterbar, bei der
unser Windows XP/Vista-Entwicklungsrechner die Aufgabe des Middle-Tiers übernimmt (mittlere der
drei Abbildungen).
3
Tutorial 8 – v03
1.3 Theorie der eingesetzten Technologien
In diesem Kapitel werden wir uns mit der eingesetzten Technologie beschäftigen.
Dieses Kapitel wird wie folgt aufgegliedert:
1. JDBC & SQLJ
2. JDBC-Treiberarchitektur
3. DB2Connect
1.3.1 JDBC & SQLJ
JDBC und SQLJ sind eine Sammlung von Schnittstellen die es Java Programmen ermöglichen mit
relationalen Datenbanken zu Kommunizieren. Die Besonderheit dieser Schnittstellen ist allerdings der
hohe Abstraktionsgrad. Gemeint ist hiermit, dass der Anwendungsentwickler, unabhängig welche
Datenbank am anderen Ende steht, seine Anwendung entwickeln kann. Hierbei realisiert JDBC einen
dynamischen und SQLJ einen statischen Zugriff.
Weitere Infos zu dem Thema JDBC & SQLJ bekommen sie aus dem Redbook:
„DB2 for z/OS and z/OS: Ready for Java“, download at
http://www.redbooks.ibm.com/abstracts/sg246435.html
1.3.2 JDBC-Treiberarchitektur
In der JDBC-Spezifikation werden 4 Arten von Treibern ermöglicht
(Quelle: DB2 for z/OS and z/OS: Ready for Java, IBM.com/redbooks)
Typ-1-Treiber
Ein JDBC-Typ-1-Treiber kommuniziert ausschließlich über einen JDBC-ODBC-Bridge-Treiber. Die
bekannteste JDBC-ODBC-Bridge ist die von Sun vertriebene. Damit ist ein Typ-1-Treiber abhängig
von einem installierten ODBC-Treiber. Der JDBC-ODBC-Bridge-Treiber wandelt JDBC- in ODBCAnfragen um.
4
Tutorial 8 – v03
Typ-2-Treiber
Ein Typ-2-Treiber kommuniziert über eine plattformspezifische Programmbibliothek auf dem Client mit
dem Datenbankserver. Das bedeutet, dass für jede Betriebssystem-Plattform zu dem Typ-2-Treiber
eine zusätzliche Programmbibliothek benötigt wird.
Typ-3-Treiber
Mittels des Typ-3-Treibers werden die JDBC-API-Befehle in generische DBMS-Befehle übersetzt und
(über ein Netzwerkprotokoll) an einen Middleware-Treiber auf einem Anwendungsserver übertragen.
Erst dieser Anwendungsserver transformiert die Befehle für die spezifischen Datenbankserver und
leitet sie an diese weiter. Ein Typ-3-Treiber benötigt damit keine plattformspezifischen Bibliotheken
und muss auch nichts über den verwendeten Datenbankserver wissen.
Typ-4-Treiber
Beim Typ-4-Treiber werden die JDBC-API-Befehle direkt in DBMS-Befehle des jeweiligen
Datenbankservers übersetzt und (über ein Netzwerkprotokoll) an diesen übertragen. Ein MiddlewareTreiber wird dabei nicht verwendet. Damit kann ein Typ-4-Treiber schneller als ein Typ-3-Treiber sein,
ist aber weniger flexibel.
Innerhalb von Tutorial 8 und 9 werden wir uns mit den Typ-4 Treiber von DB2Connect beschäftigen.
1.3.3 DB2Connect
DB2Connect ist das IBM-Produkt, für Datenbankanbindungen an eine DB2-Datenbank.
Es ist kein geschlossenes Produkt, sondern als eine riesige Bibliothek zu verstehen, mit deren Hilfe
alle wichtigen Programmiersprachen Zugriff auf eine DB2-Datenbank bekommen.
DB2Connect realisiert alle Treiber die in Abschnitt 1.3.2 genannt worden sind mit einer Ausnahme,
und zwar Typ1. Der Grund hierfür ist dass dieser Treiber als veraltet gilt und nicht mehr in Gebrauch
ist. Spezifisch liefert DB2Connect die folgenden Treiber aus:
API
Driver
Embedded
SQL
Language specific pre-compiler
DB2 CLI
DB2 CLI driver
ODBC
DB2 CLI driver
OLE DB
DB2 OLE DB provider
ADO
DB2 OLE DB provider
ADO.NET
DB2 NET Data provider
JDBC
DB2 JDBC driver (several types are
offered)
SQLJ
DB2 JDBC driver (several types are
offered)
5
Tutorial 8 – v03
1.4 Installations-Voraussetzungen und Vorbereitung
Diese Installation nimmt an, dass sich auf einem (möglicherweise Multiboot-) Rechner eine Partition H:
befindet, auf der eine frische Kopie von Windows XP installiert ist. Wird eine andere Partition benutzt,
muss der entsprechende Buchstabe anstelle von H: benutzt werden. Dieser Rechner soll als Klient für
den z/OS-Server 134.2.205.54 dienen.
Einloggen auf dem Windows Rechner erfolgt für den Benutzer administrator mit Administrator-Rechten
(wichtig!)
Ihr Administrator besitzt eine DVD, auf der sich alle für dieses und die beiden folgenden Tutorials
benötigten Programme befinden. Legen Sie auf Ihrem Rechner ein temporäres Verzeichnis an, und
Kopieren Sie die folgenden Verzeichnisse von der DVD:
DB2Connect
DB2Connect Driver only
Eclipse
jdk
Tomcat
Websphere
Das Tutorial besteht aus den folgenden 6 Abschnitten:
1. Einführung (dieser Abschnitt)
2. JDK-Installation
3. Eclipse-Installation
4. Tomcat installieren
5. Projekt erstellen mit Tomcat
6. Projekt ausführen
Die Abschnitte 2 – 4 beschäftigen sich mit der Installation unserer Umgebung. Eclipse ist die von uns
benutzte Entwicklungsumgebung. Tomcat ist ein von Eclipse unabhängiger Web Application Server,
der eine Servlet Engine beinhaltet und damit eine Laufzeitumgebung für die Ausführung von Servlets
zur Verfügung stellt. In Abschnitt 5 und 6 wird unter Eclipse Servlet-Anwendung erstellt. Diese wird
nach Tomcat exportiert und dort ausgeführt. Das Servlet bewirkt einen Zugriff auf eine DB2
Datenbank, die sich auf dem z/OS V 1.8 Rechner 134.2.205.54 befindet.
Es wird unterstellt, dass sie vor Ausführung dieses Tutorials das Tutorial Nr. 4 durchgeführt und dort
eine kleine DB2 Datenbank angelegt haben. Auf diese Datenbank wird mit 2 unterschiedlichen
Servlets einmal mit JDBC und einmal mit SQLJ zugegriffen.
Eclipse
Servlet
Tomcat
Internet
Z/OS
DB2
Eclipse enthält ein Plugin, welches automatisch das unter Eclipse erstellte Servlet für die dortige
Ausführung nach Tomcat exportiert.
Es werden die folgenden Abkürzungen verwendet:
1k
2k
1kr
2kr
bedeutet einmal klicken mit der linken Maustaste
bedeutet zweimal klicken mit der linken Maustaste (Doppelklick)
bedeutet einmal klicken mit der rechten Maustaste
bedeutet zweimal klicken mit der rechten Maustaste (Doppelklick)
6
Tutorial 8 – v03
2. JDK-Installation
In diesem Abschnitt wird die Installation des JDK beschrieben. Falls Sie schon eine Version des JDK
auf ihrem PC installiert haben (z.B. wegen der früheren Durchführung eines anderen Tutorials),
können Sie versuchen, dieses Tutorial mit dieser durchzuführen. Allerdings wäre dann nicht jedes
Detail in diesem Tutorial beschrieben. Manches müssten Sie dann eigenständig - abweichend von
diesem Tutorial - tun, dies betrifft vor allem das Eintragen von Pfaden von JDK-Bibliotheken. Sie
können aber auch ihre bisher installierte JDK-Version sauber deinstallieren und anschließend, wie hier
beschrieben, die zu diesem Tutorial dazugehörige Version installieren.
Sie benötigen eine Reihe von Programmen, die Sie auf Ihrem Rechner installieren müssen. Bitte
wenden Sie sich an Ihren Administrator, der Ihnen die Programme verfügbar machen wird. Das Erste
dieser Programme ist der Java Development Kit (JDK).
Diese Anweisung nimmt an, dass der JDK auf Partition H: installiert wird. Gegebenenfalls H: durch
den korrekten Laufwerksbuchstaben ersetzen. Das hier verwendete Software Paket besteht aus der
Datei jdk-6u3-windows-i586-p.exe.
Begriffe:
J2SE - Java 2 Standard Edition
Die Java 2 Standard Edition kann entweder als reine Laufzeitumgebung (JRE) oder als
Entwicklungspaket (J2SDK, JDK) heruntergeladen werden.
J2EE - Java 2 Enterprise Edition
Die Java 2 Enterprise Edition erweitert die Standard Edition um zusätzliche Funktionalitäten,
vorallem für Web-Applikation.
J2ME - Java 2 Mobile Edition
Die Java 2 Mobile Edition ist eine abgespekte Variante für mobile Geräte und existiert in
verschiedenen Untervarianten, die Profile genannt werden. Viele Funktionalitäten für DesktopAnwendungen fehlen, dafür gibt es abhängig vom Profil spezielle APIs für mobile
Anwendungen.
J2SDK - Java 2 Software Development Kit
Das Software Development Kit enthält neben der Laufzeitumgebung (JRE) die wichtigsten
Kommandozeilen-Entwicklungswerkzeuge wie Compiler, Debugger und Archiver. Ist auf dem
Rechner das J2SDK installiert, muss keine separate JRE installiert werden, um JavaProgramme ausführen zu können.
JDK - Java Development Kit
JDK ist der alte Name für das Software Development Kit.
JRE - Java Runtime Environment
Die JRE ist die Laufzeitumgebung. Sie ist erforderlich, um Java-Programme ausführen zu
können.
JavaVM - Java Virtual Machine
JavaVM ist das Kernstück der Laufzeitumgebung. Dient zum Ausführen von Java-Bytecode.
JRE = JVM + einige Standard Libraries (Klassen wie z.B. awt,swing...). JVM ist eigentlich nur
eine Specification für die Ausführung von Bytecode + Sicherheitseinrichtungen. Ausgeliefert
und installiert wird jre für unterschiedliche Plattformen (Betriebssystem, Hardware wie System
z, Pentium etc.).
7
Tutorial 8 – v03
Unter H:\programme das Unterverzeichnis H:\programme\jdk anlegen. In dieses Verzeichnis die Datei
jdk-6u3-windows-i586-p.exe kopieren.
Windows Explorer aufrufen. In das Verzeichnis H:\programme\jdk wechseln.
Mit der linken Maustaste Doppelklick auf jdk-6u3-windows-i586-p.exe
accept
Abbildung 3
Keine Änderung  Next 1k
 yes 1k  Next 1k  finish
8
Tutorial 8 – v03
Im Verzeichnis h:\programme\java sollten sich jetzt die beiden folgenden Unterverzeichnisse befinden:
jdk1.6.0_03
jre1.6.0_03
H:\Programme\Java>dir jdk1.6.0_03
Volume in Laufwerk H: hat keine Bezeichnung.
Volumeseriennummer: 5CC1-ED06
Verzeichnis von H:\Programme\Java\jdk1.6.0_03
15.10.2007
15.10.2007
15.10.2007
25.09.2007
15.10.2007
15.10.2007
15.10.2007
15.10.2007
15.10.2007
15.10.2007
15.10.2007
24.09.2007
24.09.2007
24.09.2007
15.10.2007
24.09.2007
24.09.2007
20:39
<DIR>
.
20:39
<DIR>
..
20:39
<DIR>
bin
01:33
2.539 COPYRIGHT
20:39
<DIR>
db
20:39
<DIR>
demo
20:38
<DIR>
include
20:39
<DIR>
jre
20:39
<DIR>
lib
20:38
13.471 LICENSE
20:38
19.780 LICENSE.rtf
23:20
26.650 README.html
23:20
24.572 README_ja.html
23:20
18.764 README_zh_CN.html
20:39
<DIR>
sample
23:19
19.267.359 src.zip
23:20
180.676 THIRDPARTYLICENSEREADME.txt
8 Datei(en)
19.553.811 Bytes
9 Verzeichnis(se), 44.591.079.424 Bytes frei
H:\Programme\Java>dir jre1.6.0_03
Volume in Laufwerk H: hat keine Bezeichnung.
Volumeseriennummer: 5CC1-ED06
Verzeichnis von H:\Programme\Java\jre1.6.0_03
15.10.2007
15.10.2007
15.10.2007
25.09.2007
15.10.2007
15.10.2007
15.10.2007
24.09.2007
24.09.2007
24.09.2007
24.09.2007
15.10.2007
24.09.2007
24.09.2007
24.09.2007
15.10.2007
24.09.2007
24.09.2007
24.09.2007
20:40
<DIR>
.
20:40
<DIR>
..
20:40
<DIR>
bin
01:25
2.539 COPYRIGHT
20:40
<DIR>
lib
20:40
11.384 LICENSE
20:40
14.925 LICENSE.rtf
23:12
17.262 LICENSE_de.rtf
23:12
16.338 LICENSE_es.rtf
23:12
16.060 LICENSE_fr.rtf
23:12
15.481 LICENSE_it.rtf
20:40
142.208 LICENSE_ja.rtf
23:12
37.867 LICENSE_ko.rtf
23:12
15.511 LICENSE_sv.rtf
23:12
27.330 LICENSE_zh_CN.rtf
20:40
215.633 LICENSE_zh_TW.rtf
23:12
14.340 README.txt
23:12
180.676 THIRDPARTYLICENSEREADME.txt
23:12
994 Welcome.html
15 Datei(en)
728.548 Bytes
4 Verzeichnis(se), 44.591.079.424 Bytes frei
G:\Programme\Java>
9
Tutorial 8 – v03
Start 1k  Einstellungen auswählen  Systemsteuerung 1k  System 2k  Erweitert 1k 
Umgebungsvariablen 1k
Abbildung 4
Im Fenster Systemvariablen mit dem Cursor auf die Zeile Path 2k (oder alternativ 1k auf die Zeile Path
und 1k auf Bearbeiten im Fenster Systemvariablen).
10
Tutorial 8 – v03
Abbildung 5
Das Fenster Systemvariable bearbeiten erscheint (s.
Abbildung 5). Mit dem Cursor in das Feld Wert der Variablen gehen, 1k. Mit der Pfeiltaste "
nach links scrollen
(oder alternativ die Taste Pos1 drücken).
Vor %SystemRoot... den Wert H:\Programme\Java\jdk1.6.0_03\bin;
1k auf OK im Fenster Systemvariable bearbeiten.
11
eingeben;
" ganz
Tutorial 8 – v03
Abbildung 6
Im Fenster Benutzervariablen für Administrator 1k auf Neu...;
12
Tutorial 8 – v03
Abbildung 7
Jetzt folgendes eingeben (s. Abbildung 7):
Ins Feld Name der Variablen:
Ins Feld Wert der Variablen:
classpath
H:\example
Klick auf OK schließt das Fenster Neue Benutzervariable. Ein weiterer Klick auf den Button OK des
Fensters Umgebungsvariablen schließt auch dieses Fenster. Ein dritter Klick auf den Button OK des
Fensters Systemeigenschaften schließt auch dieses dritte Fenster.
Schließen Sie alle restlichen Fenster, die noch offen sind und starten Sie den Rechner neu.
Hiermit werden die neuen Umgebungsvariablen wirksam.
Legen Sie jetzt ein neues Verzeichnis
H:\example
an.
Mit einem beliebigen Editor
(1k auf Start  Programme auswählen  Zubehör auswählen  1k auf Editor)
das Programm lt. Abbildung 8 erzeugen.
13
Tutorial 8 – v03
class hallo {
public static void main(String[] args) {
System.out.println("Hallo Welt really");
}
}
Abbildung 8
Dieses Programm als Datei hallo.java im Verzeichnis H:\example speichern (1k auf Datei im EditorFenster  1k auf Speichern unter...  im Feld Speichern in: in das Verzeichnis H:\example gehen 
den Dateityp auf Alle Dateien einstellen. Dies ist sehr wichtig, damit der Editor nicht noch ein Suffix .txt
unbemerkt anhängt  den Programmnamen hallo.java ins Feld Dateiname: eintippen  1k auf
Speichern).
In einem DOS-Fenster in das Verzeichnis h:\example wechseln.
Wir übersetzen das Programm mit dem Befehl javac hallo.java und gedulden uns ein paar Sekunden.
Wenn keine Rückmeldung erfolgt (mit Ausnahme des Promptes), war die Übersetzung erfolgreich. Im
Verzeichnis H:\example steht jetzt die Datei hallo.class. Jetzt java hallo eingeben. Sie sollten nach
ein paar Sekunden die Meldung
Hallo Welt really
sehen. Damit wurde der JDK erfolgreich installiert.
Im Verzeichnis h:\programme\java sollten sich jetzt die beiden folgenden Unterverzeichnisse befinden:
jdk1.6.0_03
jre1.6.0_03
3. Eclipse-Installation
Gehen sie in das in Abschnitt 1.5 angelegte Verzeichnis Eclipse. Dort finden Sie die Datei
wtp-all-in-one-sdk-R-2.0-200706260303-win32.zip. Hierbei handelt es sich um die „WEB TOOLS
PLATFORM“ von Eclipse die den Kern von Eclipse und einige Plugins besitzt um eine bessere
Entwicklung von Web-Technologien zu gewährleisten, und natürlich auch JAVA.
Das Entpacken von wtp-all-in-one-sdk-R-2.0-200706260303-win32.zip kann mittels WinZip oder
WinAce geschehen. Wenn noch nicht auf ihrem PC vorhanden, laden Sie Winzip von www.winzip.com
oder WinAce von www.winace.de herunter und installieren Sie es.
Windows Explorer aufrufen. In das in Abschnitt 1.5 angelegte Verzeichnis Eclipe gehen.
2k auf das Symbol -all-in-one-sdk-R-2.0-200706260303-win32.zip.
14
Tutorial 8 – v03
Die gezippten files werden von Winzip angezeigt. Jetzt extrahieren – 1k on Extract
H:\programme auswählen (angenommen, hierhin wollen sie Eclipse installieren)
Extract in das Verzeichnis H:\programme – dauert einige Minuten
15
Tutorial 8 – v03
Schritt 1: Eclipse starten. Mit dem Windows Explorer in das Verzeichnis H:\programme\eclipse
gehen. 2k auf das folgende Symbol:
Sie müssen einen Workspace auswählen. Benutzen Sie den vorgeschlagenen Wert.
16
Tutorial 8 – v03
Nun sollte sie Eclipse mit folgendem Bildschirm begrüßen:
Damit ist Eclipse installiert. Schließen sie wieder Eclipse, indem sie rechts oben auf das Kreuzchen
klicken.
Damit ist Eclipse installiert.
17
Tutorial 8 – v03
4. Tomcat installieren
Öffnen sie den Windows Explorer und gehen sie in den Abschnitt 1.5 angelegte Verzeichnis, in
welches Sie Tomcat runtergeladen haben.
2k auf apache-tomcat-5.5.23.exe
1k auf Next
1k auf I Agree
18
Tutorial 8 – v03
Keine Änderung. 1k auf Next
Nun geben sie an in welches Verzeichnis Tomcat installiert werden soll, normalerweise können sie
das empfohlene ohne weiteres akzeptieren.
Installation erfolgt in H:\Programme\Apache Software Foundation\Tomcat 5.5 . 1k auf Next
Passwort ein geben; 1k auf Next
19
Tutorial 8 – v03
Hier fragt Tomcat nun nach der Java Runtime Edition, er findet sie automatisch während der
Installation.
1k auf Next. Nun installiert sich Tomcat.
Nachdem die Installation abgeschlossen ist kommen sie zu folgendem Bildschirm:
Machen sie die Häkchen weg
20
Tutorial 8 – v03
1k auf Finish
5. Projekt erstellen mit Tomcat
Eclipse starten. Mit dem Windows Explorer in das Verzeichnis H:\programme\eclipse gehen. 2k auf
das folgende Symbol:
21
Tutorial 8 – v03
Das Welcome Fenster schließen
Das Eclipse Hauptfenster (Eclipse Workbench) erscheint.in jungfräulichem Zustand.
File  new  Project
22
Tutorial 8 – v03
1k auf File, 1k New, 1k auf Project,
Jetzt sollten sie auf folgende Maske gekommen sein. Hier wählen sie dann WEB und dann Dynamic
Web Project.
23
Tutorial 8 – v03
1k auf Next.
Hier wird als Erstes ein «TARGET» definiert. Es muss angegeben werden auf welcher Plattform es
laufen soll. In unserem Fall ist das Tomcat
Nun 1k auf New bei Target Runtime
24
Tutorial 8 – v03
Nun 2k auf Apache,
dann 1k auf Tomcat 5.5, dann 1k auf Next
25
Tutorial 8 – v03
Nun 1k auf Browse
In diesem Fenster müssen sie das Installationsverzeichnis von Tomcat angeben, danach 1k auf OK
26
Tutorial 8 – v03
Nun einfach nur noch 1k auf Finish
Sie kommen auf dieses Fenster zurück. Nur noch den Projektnamen „JDBC“ angeben
1k auf Finish
27
Tutorial 8 – v03
Die Eclipse Workbench wird sie nun Fragen ob sie die Perspektive umschalten wollen.
1k auf YES
Nun sollte ihre Ansicht so aussehen
Nun kommen wir zum Anlegen der Sources (die Dateien befinden sich am Ende des Tutorials als
Anhang)
1kr auf JDBC im Project Explorer Fenster
28
Tutorial 8 – v03
 New  Servlet 1k
Hier geben sie nun den Klassennamen als „JDBC“ an. 1k auf Finish
29
Tutorial 8 – v03
Eclipse erstellt automatisch einen Servlet Prototyp und gibt ihn in dem mittleren Editor Fenster wieder.
30
Tutorial 8 – v03
Drücken sie nun gleichzeitig die STRG und A Tasten um den ganzen Prototyp Code zu markieren,
und danach die Entf-/Delete-Taste um damit den von Eclipse automatisch erstellten Code zu löschen.
Im Anhang zu diesem Tutorial befindet sich der Quelltext von JDBC.java .Verwenden Sie den Eclipse
Editor, um in dem mittleren Fenster genau diesen Code einzutragen.
Sie können sich das Leben aber auch einfach machen, indem sie den Quelltext einfach mit Copy and
paste in das Editor Fenster kopieren.
31
Tutorial 8 – v03
Schauen Sie sich den Code einmal an:
Der Code enthält die üblichen import Statements und startet mit
public
class JDBC extends HttpServlet {
Das Servlet hat 3 Methoden:
public void init() throws ServletException {
public void destroy() { try { db.close();.
public void doGet (HttpServletRequest req, HttpServletResponse res)
Die beiden ersten Methoden sind Standard für ein Servlet. Die dritte Methode leistet die eigentliche
Arbeit. Hier sehen Sie das Statement
try {
Class.forName("com.ibm.db2.jcc.DB2Driver");
db = DriverManager.getConnection
("jdbc:db2://134.2.205.54:4019/S1D931","<USERID>","<PASSWORD>");
Es wird eine Verbindung zu dem z/OS Rechner 134.2.205.54 in Tübingen mit Ihrer User ID und Ihrem
Passwort hergestellt. Sie müssen in dem Code Ihre eigene User ID und Ihr eigenes Passwort
eingeben.
In dem hier benutzten Java-Programm wird das Passwort unverschlüsselt wiedergegeben, Ob dies
eine gute Idee ist, soll hier nicht diskutiert werden.
Etwas weiter unten finden wir das Statement
ResultSet RS = Stmt.executeQuery("SELECT * from <USERID>.<TABLEID>");
Es wird unterstellt, dass sie vor Ausführung dieses Tutorials das Tutorial Nr. 4 durchgeführt und dort
eine kleine DB2 Datenbank angelegt haben. Auf diese Datenbank wird mit dem Query Statement
zugegriffen. Das Statement
out.println(RS.getString(1)+ "\t" +RS.getString(2));
bewirkt die Ausgabe des Inhalts Ihrer Datenbank. Die Statements
out.println("<h1>JDBCTest</h1>");
out.println("</body></html>");
generieren den Rest der Ausgabe.
Es wird vorgeschlagen, dass Sie die letzte geschweifte Klammer entfernen. Dies wird einen Fehler
verursachen, den wir anschließend korrigieren werden.
32
Tutorial 8 – v03
Nun kommen wir zum Import der Treiberklassen für die JBDC-Verbindung
33
Tutorial 8 – v03
1k auf JDBC im Project Explorer, dann 1k auf Properties
1k auf Java Build Path
34
Tutorial 8 – v03
1k auf den Reiter Libraries
1k auf Add External JARs
35
Tutorial 8 – v03
Hier müssen sie nun den Pfad angeben an dem sie die Treiber entpackt haben, danach markieren sie
alle 3 Dateien und dann 1k auf Open. Es kann auch sein, dass sie an Stelle des obigen Screens den
Folgenden bekommen.
36
Tutorial 8 – v03
Gehen Sie zu dem Verzeichnis, in dem sich die drei Dateien
Mit gedrückter Strg (bzw. ctrl) Taste alle drei Dateien markieren, und dann Öffnen
37
Tutorial 8 – v03
Jetzt sollten sie diesen Screen sehen. 1k auf OK.
Danach sollten sie auf den Eclipse Bildschirm zurückkommen. So sieht das Explorer Fenster aus.
----------------------------------------------------------------------------------------------------------------------------- -------Wir haben Eclipse nun clientseitig die Treiber verfügbar gemacht, damit Eclipse die Java-Datei
kompilieren kann. Nun muss aber Tomcat noch die Treiber bekommen, da wir mit Servlets eine
serverseitige Ausführung haben.
38
Tutorial 8 – v03
1k unten auf den Reiter Servers, und dann 2k auf Tomcat v5.5 …..
39
Tutorial 8 – v03
1k auf Open launch configuration
1k auf den Reiter Classpath
40
Tutorial 8 – v03
41
Tutorial 8 – v03
1k auf User entries danach 1k auf Add External JARs
Wieder alle 3 Dateien markieren und dann 1k auf Open
Es kann die gleiche alternative Bildsequenz erscheinen wie zuvor.
42
Tutorial 8 – v03
1k auf OK
Sie sind wieder zurück im Eclipse Hauptbildschirm
43
Tutorial 8 – v03
Nun wollen wir unser Projekt noch um SQLJ erweitern. Dazu muss zuerst das mitgelieferte SQLJ
Source File sample02.sqlj mit dem DB2 Precompiler übersetzt werden.
Öffnen Sie dazu die Datei sample02.sql und ersetzen Sie die Blöcke <USERID>, <PASSWORD> und
<TABLEID> durch Ihre eigenen jeweiligen Werte. Überprüfen Sie außerdem, ob die richtige IPAdresse angegeben ist (134.2.205.54) und ändern Sie sie gegebenenfalls.
DB2 Express installieren
44
Tutorial 8 – v03
Öffnen Sie den Windows Explorer und gehen sie in das Verzeichnis, in welches Sie DB2 Express
runtergeladen haben. Klicken Sie doppelt auf setup.exe. Es öffnet sich ein Browserfenster mit
folgendem Inhalt:
Klicken Sie hier im Menü links auf „Installieren eines Produkts“
45
Tutorial 8 – v03
Klicken Sie auf „Neue Installation“
Klicken Sie auf „weiter“.
46
Tutorial 8 – v03
Akzeptieren Sie die Lizenzvereinbarung und klicken Sie auf „weiter“.
Wählen Sie eine „typische Installation“ aus.
47
Tutorial 8 – v03
Übernehmen Sie den Standardwert und klicken Sie auf „weiter“.
Klicken Sie auf „weiter“.
48
Tutorial 8 – v03
Wählen Sie „konto für lokales System“ aus und klicken Sie auf weiter.
Klicken Sie auf „weiter“.
49
Tutorial 8 – v03
Klicken Sie auf „Fertig stellen“. Der Installationsvorgang wird gestartet. Am Ende erhält man folgenden
Screen:
50
Tutorial 8 – v03
“Fertig stellen“ anklicken.
Im Ordner C:\Programme\IBM\SQLLIB\BIN befindet sich nun eine Datei sqlj.exe. Sie ist ein
Precompiler für das sqlj-Source-File.
Öffnen sie eine Konsole und übersetzen Sie nun das abgeänderte SQLJ Source File mit dem DB2
SQLJ Precompiler mit dem Befehl „sqlj sample02.sqlj“.
Ihr Ergebnis sollte dann identisch mit obigem Screenshot sein. Sie haben nun das Java Source File
sample02.java und das DB2 Serialized Profile sample02.SJProfile0.ser erhalten. Wechseln Sie bitte
nun wieder zurück zu Ihrer Eclipse Oberfläche.
51
Tutorial 8 – v03
1kr auf JDBC, dann 1k auf Import, dann 1k auf das nächste Import
52
Tutorial 8 – v03
2k auf General, 1k auf File System
1k auf Next
1k auf Browse von From Directory
53
Tutorial 8 – v03
Wechseln Sie in das Verzeichnis, in welchem Sie das SQLJ Source File mit dem DB2 SQLJ
Precompiler übersetzt haben. 1k auf ok
54
Tutorial 8 – v03
Jetzt ein Häkchen machen bei sample02.java und sample02_SJProfile0.ser
1k auf Browse von Input Folder
55
Tutorial 8 – v03
2k auf JDBC, dann
1k auf src , und dann 1k auf OK
56
Tutorial 8 – v03
57
Tutorial 8 – v03
1k auf Finish
Eclipse kehrt nun zum Hauptbildschirm zurück
58
Tutorial 8 – v03
1kr auf JDBC im Project Explorer, 1k auf New, 1k auf Servlet
59
Tutorial 8 – v03
Hier als Class Name SQLJ eintragen danach 1k auf Finish
Eclipse kehrt nun zum Hauptbildschirm zurück und öffnet die neu erstellte Datei
60
Tutorial 8 – v03
Drücken sie nun gleichzeitig die STRG und A Tasten um den ganzen Prototyp Code zu maktieren,
und danach die Entf-/Delete-Taste um damit den von Eclipse automatisch erstellten Code zu löschen.
Danach den Code SQLJ.java aus dem Anhang rein kopieren
61
Tutorial 8 – v03
62
Tutorial 8 – v03
6. Projekt ausführen
Nun sind sie soweit, alles ist eingestellt und es kann nun ausgeführt werden.
1kr auf JDBC im Project Explorer, dann 1k auf Run As, dann 1k auf Run on Server
1k auf ok
63
Tutorial 8 – v03
1k auf Finish
Nun fährt Eclipse Tomcat hoch und startet diesen mit dem Servlet
(Die 404 Meldung ist erwartet)
64
Tutorial 8 – v03
Geben sie nun in der Adressleiste hinten einfach noch JDBC ein.
Und dann auf Enter drücken
65
Tutorial 8 – v03
Wir erhalten diese oder eine ähnliche schwerwiegende Fehlermeldung. Scroll down in der Console
gibt uns den folgenden Hinweis:
INFO: Marking servlet JDBC as unavailable
18.10.2007 20:53:21 org.apache.catalina.core.StandardWrapperValve invoke
SCHWERWIEGEND: Allocate exception for servlet JDBC
java.lang.Error: Unresolved compilation problem:
Syntax error, insert "}" to complete ClassBody
Erinnern Sie sich? Wir hatten bei der Erstellung des Servlet Codes die letzte geschweifte Klammer
gelöscht.
Im Explorer Fenster 2k auf JDBC.Java. Dies öffnet den Servlet Code im Editor Fenster.
66
Tutorial 8 – v03
Die rote Markierung gibt uns einen Hinweis auf die fehlende rechte geschweifte Klammer. Wir fügen
die fehlende Klammer ein, und speichern das Ergebnis mit gleichzeitiger Betätigung der CTRL und S
Tasten ab.
Alternativ können wir hierfür auch das Save Icon benutzen.
1kr auf JDBC im Project Explorer, dann 1k auf Run As, dann 1k auf Run on Server
Wieder JDBC an die URL anhängen. Nun sollte die folgende Ausgabe erscheinen:
67
Tutorial 8 – v03
Schauen sie sich nochmals den Servlet Code in der Datei JDBC.java an.
Was Sie sehen, ist das Ergebnis der beiden Statements
try {
Statement Stmt = db.createStatement();
ResultSet RS = Stmt.executeQuery("SELECT * from
prak004.tab004");
while (RS.next()) {
out.println(RS.getString(1)+ "\t" +RS.getString(2));
}
RS.close();
Stmt.close();
}
catch (SQLException E) {
out.println("SQLException: " + E.getMessage());
out.println("SQLState:
" + E.getSQLState());
out.println("VendorError: " + E.getErrorCode());
}
out.println("<h1>JDBCTest</h1>");
out.println("</body></html>");
1
2
}
Das erste println Statement gibt den Inhalt der DB2 Datenbank wieder. Hier sollten jetzt Ihre Namen
stehen. Das zweite println Statement gibt den statischen Text „JDBCTest“ aus .
68
Tutorial 8 – v03
Nun noch zum Testen des SQLJ Programms, anstatt vorher JDBC, einfach SQLJ hinten eingeben.
Nun sollte die Ausgabe folgendes liefern
Herzlichen Glückwunsch. Sie haben erfolgreich Eclipse und Tomcat installiert, ein Servlet mit Eclipse
entwickelt, nach Tomcat exportiert und damit auf die von Ihnen in Tutorial 4 erzeugte Datenbank
zugegriffen.
Das beendet Tutorial 8.
69
Tutorial 8 – v03
Anhang
Quelltext von JDBC.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
@SuppressWarnings("serial")
public
class JDBC extends HttpServlet {
Connection db;
String error = "";
public void init() throws ServletException {
}
public void doGet (HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
ServletOutputStream out = res.getOutputStream();
out.println("<html>");
out.println("<head><title>JDBC</title></head>");
out.println("<body>");
out.println("<br><hr>");
out.println(error);
try {
Class.forName("com.ibm.db2.jcc.DB2Driver");
db =
DriverManager.getConnection("jdbc:db2://134.2.205.54:4019/S1D931","<USERID>
","<PASSWORD>");
}
catch (Exception e) {
log("Kann keine DB-Verbindung herstellen", e);
throw new ServletException("Abfrage: Kann nicht initialisieren:
" +
e.getMessage(), e);
}
try {
Statement Stmt = db.createStatement();
ResultSet RS = Stmt.executeQuery("SELECT * from
<USERID>.<TABLENAME>");
while (RS.next()) {
out.println(RS.getString(1)+ "\t" +RS.getString(2));
}
RS.close();
Stmt.close();
}
catch (SQLException E) {
out.println("SQLException: " + E.getMessage());
out.println("SQLState:
" + E.getSQLState());
out.println("VendorError: " + E.getErrorCode());
70
Tutorial 8 – v03
}
out.println("<h1>JDBCTest</h1>");
out.println("</body></html>");
}
public void destroy() {
try { db.close(); }
catch (SQLException e) {}
}
}
71
Tutorial 8 – v03
Quelltext von SQLJ.java
import java.io.IOException;
import java.sql.SQLException;
import
import
import
import
javax.servlet.ServletException;
javax.servlet.ServletOutputStream;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
public class SQLJ extends javax.servlet.http.HttpServlet implements
javax.servlet.Servlet {
String x;
public SQLJ() {
super();
}
public String callsqljroutines() throws SQLException,
InterruptedException{
sample02 test= new sample02();
return test.result;
}
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
response.setContentType("text/html");
ServletOutputStream out = response.getOutputStream();
out.println("<html>");
out.println("<head><title>SQLJ</title></head>");
out.println("<body>");
out.println("<br><hr>");
out.println("<h1>SQLJTest</h1>");
out.println(x);
out.println("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
}
public void init() throws ServletException {
try {
x="<h2>"+ callsqljroutines()+"</h2>";
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
72