7 Deployment Descriptor 7.1 Einführung Heutige Webapplikationen beinhalten verschiedene Komponenten. Hier sind vor allem Servlets, Beans, JSP´s oder HTML – Seiten zu nennen, die in einem Web Container untergebracht sind. Der Deployment Descriptor beschreibt wie die Komponenten angesprochen werden und aus welchen Bestandteilen der Web Container besteht. Jede Web Applikation hat einen eigenen Deployment Descriptor. Der Deployment Descriptor ist eine Textdatei die nach der Extensibel Markup Language ( xml ) aufgebaut ist und „web.xml“ heißt. Mit dem Deployment Descriptor können unter anderem auch Servlets konfiguriert werden. Das heißt, es können für ein Servlet auch mehrere Namen vergeben werden. Es ist auch möglich Parameter dafür festzulegen und mit welchen Werten es initialisiert werden kann. Auch der Ladevorgang des Servlets kann festgelegt werden. Der Vorteil des Deployment Descriptors ist also die nachträgliche Änderung von Parametern und Initialisierungswerten ohne das der Java Quellcode überarbeitet werden muss. 1 7.2 Beispiel eines Bean Descriptors <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app id="WebApp"> <display-name>WebProjekt</display-name> <servlet> <servlet-name>rpcrouter</servlet-name> <display-name>Apache-SOAP RPC Router</display-name> <description>no description</description> <servlet-class>com.ibm.soap.server.http.WASRPCRouterServlet</servletclass> <init-param> <param-name>faultListener</param-name> <param-value>org.apache.soap.server.DOMFaultListener</paramvalue> </init-param> </servlet> <servlet> <servlet-name>messagerouter</servlet-name> <display-name>Apache-SOAP Message Router</display-name> <description>no description</description> <servletclass>com.ibm.soap.server.http.WASMessageRouterServlet</servlet-class> <init-param> <param-name>faultListener</param-name> <param-value>org.apache.soap.server.DOMFaultListener</paramvalue> </init-param> </servlet> <servlet-mapping> <servlet-name>rpcrouter</servlet-name> <url-pattern>servlet/rpcrouter</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>messagerouter</servlet-name> <url-pattern>servlet/messagerouter</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app> Dieser Bean Descriptor enthält Informationen über die Enterprise Java Bean 2 (EJB)zum Beispiel: • • • • • • • Name des EJB Name der Bean Klassen Name der Schnittstelle Assoziationen Verbindungen zu Datenbanken Transaktionsverhalten Informationen über Laufzeitverhalten Der Deployment Descriptor wird vom Applikation Assembler und/ oder dem Bean Deployer erstellt. Er wird automatisch der Applikation und dem Web Container angepasst. Der Entwickler legt nur die Struktur der EJB´s im Deployment Descriptor fest. 3 8 Erstellen einer Webseite mit Datenbankzugriff Moderne Unternehmenswebanwendungen kommen nur in den seltensten Fällen ohne komplexe Datenhaltung aus. Mittel der Wahl zur Datenorganisation und Datenbereitstellung sind heutzutage relationale Datenbanksysteme. Das Datenbanksystem des WebSphere Studio Application Developer™ ist das IBM™ eigene DB2™. Grundsätzlich ist mit dem WebSphere Studio Application Developer™ aber der Zugriff auf jedes beliebige Datenbanksystem möglich, sofern ein Open DataBase Connectivity (ODBC) Treiber zur Verfügung steht. 8.1 Erstellen des Java Quelltextes mit Datenbankzugriff Soll von einem Servlet oder einer JavaServerPage aus auf eine Datenbank zugegriffen werden muß der Quelltext in der Java Perspektive erstellt werden. Der Editor der Java Perspektive bietet u.a die üblichen unterstützenden Hilfsmittel wie Syntaxhighlighting und Auto-Textvervollständigung. Das bedeutet, dass der Entwickler über die in Java verfügbaren Mittel zur Verbindung zu Datenbanken und deren Manipulation wissen muss und mit ihnen umgehen kann um eine Java Seite zu erstellen, die auf Datenbanken zugreift. Die Stärke des WebSphere Studio Application Developers™ liegt also nicht bei der Erstellung des Quelltextes sondern bei der Erstellung, Verwaltung und Bearbeitung der Datenbanken. Der Gedanke dahinter ist, den Java Programmierer von der Last zu befreien auch die Datenbanksprache SQL (Structured Query Language) zu beherrschen. Hierzu bietet der WebSphere Studio Application Developer™ eigens eine eigene Perspektive: die Daten Perspektive. Im Rahmen unseres Projektes wollen wir aber lediglich eine statische Webseite in einem bestehenden Webprojekt erstellen die mittels einer einfachen „SELECT * DBName;“ Anweisung eine kleine Datenbank ausliest und den Inhalt ausgibt. 4 1. Erstellen einer Beispiel Datenbank In der Daten Perspektive wird über „Datei“..“Neu“..“Andere“ ein Assistent zur Erstellung einer neuen Datenbank aufgerufen. Nach einander müssen dann in gleicher Weise noch ein Datenbankschema und schliesslich die eigentliche Tabelle erzeugt werden. Im Assistenten zur Tabellenerstellung können in sehr einfacher Weise Spalten erzeugt, Namen vergeben und Primär/Fremdschlüssel angelegt werden. Unsere Testdatenbank verfügt nur über zwei Integerspalten ohne jegliche Schlüssel oder Indices. In der Datenperspektive können alle festgelegten Namen, Pfade und sogar Schlüssel, usw. nachträglich verändert werden. Diese Funktionalität bietet der WebSphere Studio Application Developer™ allerdings nur wenn das Datenbanksystem IBM™ DB2 implementiert wurde. Die Beispielerstellung spiegelt aber das Zugreifen auf eine vorhandene Datenbank, da dies der wohl häufiger gewählte Weg sein wird, auf dem eine Webpräsenz erstellt wird. Dazu wurde vorab, unabhängig vom WebSphere Studio Application Developer™ in DB2 eine Testdatenbank mit oben beschriebener Tabelle generiert. 5 2. Erstellen einer Verbindung zur Datenbank Durch Rechtsklick in der DB-Browser Sicht erscheint ein Kontextmenü mit dem Unterpunkt „Neue Verbindung erstellen...“. Hier muß die Datenbank benannt und der korrekte Benutzername inklusive Passwort eingetragen werden. Optional kann noch ein Verbindungsname angegeben werden, in unserem Beispiel „TestVerbindung1“. Nach erfolgreichem Abschluss des Assistenten erscheint sodann eine Eintragung im DBBrowserfenster mit dem Namen der erstellten DBverbindung. 6 3. Erstellen der Webseite oder über In der geöffneten Webperspektive wird über das Symbol „Datei“..“Neu“ ein Assistent geöffnet, der sie bei der Erstellung der Webseite mit Datenbankzugriff unterstützt. Auf der ersten Seite des Assistenten muss der Zielordner der „webapplication“ Ordner des bestehenden Webprojektes sein. Soll eine Fehlerseite oder eine *.css Datei zur Formatvorlage verwendet werden, so können sie hier ausgewählt werden. Wir verwenden für das Modell die vorgegebene View Bean und speichern die Ergebnisse in „Anfordern“. Die nächste Seite des Assistenten muss übersprungen werden da noch keine SQL-Anweisung erstellt wurde. Auf der folgenden Seite bietet der Assistent eine „Geführte Erstellung einer SQL Anweisung“ an. Als Datenbankmodell wählen wir die vorab erstellte Datenbank aus.Die folgende Seite bietet eine sehr komfortable Hilfe beim Erstellen von SQL Anweisungen. In unserer Beispielseite wollen wir uns aber auf einen einfachen „SELECT * „ Befehl beschränken. Mit der „Weiter“ Taste wechseln wir auf die nächste Seite, die die eben erstellte SQL Anweisung im Quelltext anzeigt und die Möglichkeit bietet den Quelltext zu prüfen, eventuell zu bearbeiten und schließlich zu Textzwecken ausführen zu lassen. ! " Die nächste Seite bietet eine Vorabansicht der zu erzeugenden Webseiten und wiederum die Möglichkeit diese zu editieren. Je nach Auswahl auf der ersten Assistentenseite werden zum einfachen Datenbankzugriff drei Dateien erstellt: Die *InputForm.html, auf der anhand einer Nutzereingabe die gewünschten Daten selektiert werden, eine *MasterView.jsp, sowie eine *DetailView.jsp, die beide für die Darstellung der abgefragten Daten verantwortlich sind. Die * stehen für frei wählbare Präfixe, die auf der abschließenden Seite des Assistenten eingegeben werden können. 7 Nachdem nun die Seite und die SQL Anweisung erstellt wurden gibt ihnen der Assistent noch die Möglichkeit einen Frontcontroller zu erstellen oder bestehende auszuwählen und weitere View-Beans anzulegen. Zum Schluss kann noch, wie bereits erwähnt, ein Präfix vorgestellt werden und dann die Webseiten fertiggestellt werden. #$ #' % & % & 8 9 Schlussbetrachtung 9.1 Überblick Seit Mitte der neunziger Jahre die ersten Dot.com Firmen das Internet als virtuellen Marktplatz entdeckten und die Fähigkeit des Netzes nutzten, ihre Waren oder Dienstleistungen in einem ungleich größeren geographischen Gebiet zu vertreiben als dies vorher möglich war, ist die Anzahl der Unternehmen, die ihre Produkte über das Internet anbieten um ein Vielfaches gestiegen. In Wahrheit kommt heute keine größere Unternehmung ohne eine umfangreiche Internetpräsenz aus, sei es um Produkte zu verkaufen, sie zu bewerben, KundenSupport zu gewährleisten oder aus mannigfaltigen anderen Gründen. Diese Webpräsenzen unterscheiden sich von den Internetauftritten der ersten Stunde wie ein Dia von einem Film; waren damals, aufgrund fehlender Technik, die Seiten statisch wird heute der Online-Kunde mit personalisierten Angeboten umworben. Als vor einigen Jahren IBM™ das Schlagwort „e-business“ durch eine großangelegte Werbekampagne in das Bewusstsein der Menschen brachte hat sich das Aufgabenfeld der vormaligen reinen Internetpräsenz erheblich ausgeweitet. Unter „e-business“ verstehen wir heute die Integration von Interessenten und Kunden sowie Lieferanten und Geschäftspartnern aber auch eigenen Mitarbeitern und externe wie interne Geschäftsprozesse in IT-Systeme unter Einsatz von Internettechnologie. Um diesen Anforderungen gerecht zu werden entwickelte SUN™ mit der Version 1.2 der Java-Spezifikation u.a. die Java 2 Enterprise Edition. Die J2EE umfasst außer den Elementen der Java 2 Standard Edition viele zusätzliche Schnittstellen für den Einsatz in Mehrschichtarchitekturen (wie z.B. komplexe Webanwendungen) und Serveranwendungen. Microsoft™ brachte mittlerweile mit „.Net“ eine Konkurrenz-Plattform auf den Markt, die diese Funktionalität auf Microsoft™ eigene Techniken, wie Active Server Pages oder C# anwendet. Um diese mittlerweile, unter Umständen, äußerst komplexen Unternehmensanwendungen erstellen und warten zu können bedarf es eines Frameworks mit dem hoch entwickelte B2B (Business to Business) oder B2C (Business to Consumer) Applikation entworfen und umgesetzt werden können. Im Rahmen dieser Dokumentation befassten wir uns mit einem dieser Integrated Development Enviroments (IDE), dem WebSphere Studio Application Developer™. Am Anfang der Beschäftigung mit dem WebSphere Studio Application Developer™ stand die Auseinandersetzung mit der Oberfläche, der Workbench, der Perspektiven sowie des internen Ablaufs bei der Erstellung eines Unternehmensprojektes. Im weiteren Verlauf erstellten wir diverse Projekte, allen voran ein Webprojekt in dem die Anfertigung je eines Servlets, einer JavaServerPage und einer Webseite mit Datenbankzugriff sowie der Einsatz einer Enterprise Java Beans durchgeführt wurden 9 9.2 Fazit Dem erfahrenen Entwickler bietet der WebSphere Studio Application Developer™ von IBM™ ein umfangreich ausgestattetes Entwicklungswerkzeug an die Hand. Aber auch ein vergleichsweise ungeübter Nutzer findet sich nach anfänglichen Schwierigkeiten, mit der internen Verwaltungsstruktur (Projekte, Perspektiven), recht schnell zurecht um einfache bis mittelschwere Applikationen zu entwerfen. Positiv anzumerken ist die Online Hilfe, die bis auf wenige Ausnahmen mit kompetentem Rat zur Seite steht, und die durchdachte Ergonomie der Oberfläche. Die bereitgestellten Assistenten bieten zusätzlich Hilfe bei auszuwählenden Objekten, was zum Beispiel die Ablage einer Datei in einen falschen Ordner verhindert. Insgesamt überwiegt ein positiver Eindruck und die Gewissheit, nach gründlicher Einarbeitung ein mächtiges Werkzeug zur Erstellung komplexer Unternehmensanwendung zur Verfügung zu haben. 9.3 Ausblick Auf dem Markt befinden sich zur Zeit einige ernstzunehmende Konkurrenten für den WebSphere Studio Application Developer™ darunter z. B. zwei Produkte aus dem Hause Rational™ (je eine für Java und eine für .Net), die Weiterentwicklung des bekannten JBuilders , das Enterprise Studio for Java 3, von Borland™, die Oracle™ Developer Suite und natürlich der Hauptkonkurrent Visual Studio .Net Enterprise Architect Edition von Microsoft™. Trotz schlechter Benchmarks, wenn auch in umstrittenen Tests erzielt (Report der Butler Group – Vol. 1, Juni 2002 und The Middleware Company) im Bereich Technische Funktionen, verwendete Architekturen und strategischer Hintergrund der Werkzeuge und ihrer Hersteller, sowie Performanz der zugehörigen Server (nur .Net-Server, WebSphere Application Server und BEA™ Logic) kann sich der WebSphere Studio Application Developer™ noch mit an der Spitze der bekanntesten und meist benutzten IDE´s halten. Vorteile des WebSphere Studio Application Developer™ gegenüber .Net sind derzeit noch die offenere Architektur und die Sicherheitslücken bei .Net. Sollte sich aber der recht schnelle Aufstieg von .Net fortsetzen wird es schwierig werden diese Spitzenposition am Markt zu halten. Heidelberg / Mannheim / Ludwigshafen / Leipzig Angelika Berg Heiko Petzold Joachim Schmidt 10 Sept. bis Nov. 2002 Literaturverzeichnis Stefan Schäffer, Walter Schilder: Enteprise Java mit IBM Websphere Addison-Wesley Verlag, 2002 http://ibm.de 20.09.2002 11 Abbildungsverzeichnis Abbildung 1 Auswahl .......................................................................................................................... 9 Abbildung 2 Projektnamensvergabe.................................................................................................... 9 Abbildung 3 Java-Perspektive ........................................................................................................... 11 Abbildung 4 Menü-& Symbolleiste................................................................................................... 15 Abbildung 5 Symbole in der Sicht Tasks .......................................................................................... 16 Abbildung 6 Menü-& Symbolleiste................................................................................................... 17 Abbildung 7 Serverexemplare ........................................................................................................... 19 Abbildung 8 Menü-& Symbolleiste................................................................................................... 20 Abbildung 9 Menü-& Symbolleiste................................................................................................... 23 Abbildung 10 Link Sicht ................................................................................................................... 26 Abbildung 11 Assistent Webprojekt.................................................................................................. 27 Abbildung 12 Assistent Webprojekt.................................................................................................. 28 Abbildung 13 Servlet Assistent ......................................................................................................... 31 Abbildung 14 Serverkonfiguration Assistent .................................................................................... 32 Abbildung 15 Eigenschaften für Server............................................................................................. 32 Abbildung 16 Übersicht der angelegten Server ................................................................................. 33 Abbildung 17 Generieren eines Servlets aus einer JSP Datei............................................................ 34 Abbildung 18 Quelltext einer einfachen JSP Datei ........................................................................... 35 Abbildung 19 Auswahldialog JSP ..................................................................................................... 36 Abbildung 20 Scripteditor ................................................................................................................. 37 Abbildung 21 Ausgabe der JSP aus Abb. 2 ....................................................................................... 37 Abbildung 22 Projekterstellung 1. Schritt ......................................................................................... 39 Abbildung 23 Projekterstellung 2. Schritt ......................................................................................... 39 Abbildung 24 Projekterstellung 3. Schritt ......................................................................................... 40 Abbildung 25 Projekterstellung 4. Schritt ......................................................................................... 40 Abbildung 26 Java Einstellungen ...................................................................................................... 41 Abbildung 27 Archiv auswählen ....................................................................................................... 41 Abbildung 28 Navigator Sicht ........................................................................................................... 42 Abbildung 29 Bean Import ................................................................................................................ 42 Abbildung 30 Resourcenauswahl ...................................................................................................... 43 Abbildung 31 Datei auswählen.......................................................................................................... 43 Abbildung 32 Resourcen importieren................................................................................................ 44 Abbildung 33 Navigatoransicht ......................................................................................................... 44 Abbildung 34 Webservice Auswahl .................................................................................................. 45 Abbildung 35 Namensvergabe .......................................................................................................... 45 Abbildung 36 Beanimport ................................................................................................................. 46 Abbildung 37 Beankennzeichnung.................................................................................................... 46 Abbildung 38 Methodenauswahl ....................................................................................................... 47 Abbildung 39 Typzuordnung............................................................................................................. 47 Abbildung 40 Proxy-Generierung ..................................................................................................... 48 Abbildung 41 Testclient .................................................................................................................... 48 Abbildung 42 Beispiel-Generieren .................................................................................................... 49 Abbildung 43 Publizierung................................................................................................................ 49 Abbildung 44 Testserver.................................................................................................................... 50 Abbildung 45 Browseransicht ........................................................................................................... 50 Abbildung 46 Descriptoransicht ........................................................................................................ 52 Abbildung 47 Erstellen der TestDB................................................................................................... 56 Abbildung 48 Ausgabe der DB.......................................................................................................... 57 Abbildung 49 Kontrolle der SQL Anweisung(en)............................................................................. 58 Abbildung 50 Ansicht Eingabeformular............................................................................................ 59 Abbildung 51 Ansicht Ausgabeformular........................................................................................... 59 12 EINLEITUNG: Was ist eigentlich Websphere? 3 3 1 Installation 1.1 Systemvoraussetzungen 1.1.1 Hardware Test 1.2 Komponenten 1.3 Installation 1.4 Probleme 4 4 4 5 5 6 2 Der WebSphere Application Developer 7 2.1 Funktionsweise des WebSphere Application Developer™ 7 2.1.1 Projekte 7 3.1 Was sind Perspektiven und Sichten? 10 3.2 Arbeiten mit Perspektiven und Sichten 12 3.3 Web-Perspektive 13 3.3.1 Sichten 13 3.3.2 Menü und Symbolleiste 15 3.4 Java-Perspektive 15 3.4.1 Sichten 15 3.4.2 Menü und Symbolleiste 17 3.5 J2EE-Perspektive 17 3.5.1 Sichten 17 3.5.2 Menü und Symbolleiste 20 3.6 Server-Perspektive 22 3.6.1 Sichten 22 3.6.2 Menü und Symbolleiste 23 3.7 Debug-Perspektive 23 3.7.1 Sichten 23 3.7.2 Menü und Symbolleiste 24 3.8 Daten-Perspektive 24 3.8.1 Sichten 24 3.8.2 Menü und Symbolleiste 25 3.9 Hilfe-Perspektive 25 3.10 Java-Typhierarchie-P. / Plug-in-P. / Profilermittlung-P. / Resource-P. / Scripts-P. / Team-P. / XML-Perspektive 25 4 Erstellen unseres Webprojektes HellDevelopers 4.2 Arbeitsschritte zum Erstellen des Webprojektes: 4.2.1 Erstellen der „index.html“ 4.2.2 Erstellen der Datei „DokuContainer“ mit Frames 4.2.3 Erstellen der restlichen HTML Seiten. 4.2.4 Erstellen des Servlets „FirstServlet“ 4.2.4.1 Was ist ein Servlet ? 4.2.4.2 Erstellen des Servlets 4.2.5 Erstellen des Serverprojektes 13 26 27 28 29 29 30 30 31 32 5 Erstellen einer JavaServerPage 5.1 Was ist eine JavaServerPage ? 5.2 Worin unterscheiden sich Servlets und JavaServerPages ? 5.3 Erstellen einer JavaServerPage „FirstJSP“ mit Hilfe des WebSphere Studio Application Developers™ 34 34 35 6 Enterprise Java Beans 6.1 Implementierung einer Bean die Aktienkurse aufruft 6.2 Fehlermeldungen beim Aufrufen des Testservers: 38 39 51 7 Deployment Descriptor 7.1 Einführung 7.2 Beispiel eines Bean Descriptors 52 52 53 8 Erstellen einer Webseite mit Datenbankzugriff 8.1 Erstellen des Java Quelltextes mit Datenbankzugriff 55 55 9 Schlussbetrachtung 9.1 Überblick 9.2 Fazit 9.3 Ausblick 60 60 61 61 36 Literaturverzeichnis 62 Abbildungsverzeichnis 63 14