Frank Müller-Hofmann Martin Hiller Gerhard Wanner Programmierung von verteilten Systemen und Webanwendungen mit Java EE Erste Schritte in der Java Enterprise Edition Programmierung von verteilten Systemen und Webanwendungen mit Java EE Frank Müller-Hofmann • Martin Hiller Gerhard Wanner Programmierung von verteilten Systemen und Webanwendungen mit Java EE Erste Schritte in der Java Enterprise Edition Frank Müller-Hofmann Martin Hiller Uhingen, Deutschland Ostfildern, Deutschland G erhard Wanner Leinfelden-Echterdingen, Deutschland ISBN 978-3-658-10511-2 ISBN 978-3-658-10512-9 (eBook) DOI 10.1007/978-3-658-10512-9 Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. Springer Vieweg © Springer Fachmedien Wiesbaden 2015 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung, die nicht ausdrücklich vom Urheberrechtsgesetz zugelassen ist, bedarf der vorherigen Zustimmung des Verlags. Das gilt insbesondere für Vervielfältigungen, Bearbeitungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Der Verlag, die Autoren und die Herausgeber gehen davon aus, dass die Angaben und Informationen in diesem Werk zum Zeitpunkt der Veröffentlichung vollständig und korrekt sind. Weder der Verlag noch die Autoren oder die Herausgeber übernehmen, ausdrücklich oder implizit, Gewähr für den Inhalt des Werkes, etwaige Fehler oder Äußerungen. Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier Springer Fachmedien Wiesbaden GmbH ist Teil der Fachverlagsgruppe Springer Science+Business Media (www.springer.com) Vorwort Dieses Buch behandelt die Programmierung verteilter Systeme in Java. Besonderer Wert wird auf die Realisierung serverseitiger Anwendungen im Rahmen der Architektur von Java EE 7 gelegt. Nach der Einführung in die Architektur von Java EE 7 von Oracle in Kapitel 1 werden wichtige Mechanismen der Interprozesskommunikation vorgestellt. Kapitel 2 behan- delt hierbei die Netzwerkprogrammierung via Sockets und Kapitel 3 erläutert die Java-spezifische Remote Method Invocation als ein Mittel zur synchronen Kommuni- kation zwischen verteilten Betriebssystemprozessen. Diese beiden Kapitel über die Interprozesskommunikation gehören jedoch nicht zur Java EE-Architektur. Anschließend wird die Realisierung von Webanwendungen mit Hilfe von Servlets, JavaServer Pages und JavaServer Faces in den Kapiteln 4 bis 6 erläutert. Kapitel 7 beschreibt die persistente Speicherung von Daten anhand der low-level Technologie Java Database Connectivity. In Kapitel 8 wird mit den Enterprise JavaBeans das serverseitige Komponenten- modell der Architektur von Java EE 7 besprochen. In Kapitel 9 wird die im Gegensatz zu JDBC abstraktere high-level Technologie Java Persistence API zur persistenten Speicherung von Daten vorgestellt. Zahlreiche Beispiele sowie Übungsaufgaben runden das Buch ab, sodass der Leser nach der Lektüre des Buches in der Lage ist, komponentenbasierte Webanwendung- en auf Basis der Java Enterprise Architektur zu erstellen. Danksagung Wir bedanken uns sehr herzlich bei Prof. Dr. Joachim Goll, Marcel Kilian, Markus Schuler und Karin Weiß für ihre wertvollen Hinweise und Korrekturen. Herrn Steffen Wahl danken wir für die sorgfältige Durchführung des Konfigurationsmanagements. V Inhaltsverzeichnis 1 EINFÜHRUNG IN DIE ARCHITEKTUR VON JAVA EE 7 ................... 1 1.1 Schichtenmodelle für verteilte Systeme in Java ...................................... 2 1.2 Der Java EE Application Server .............................................................. 5 1.3 Historische Entwicklung von Java EE ...................................................... 6 1.4 Die Web- und die Verarbeitungsschicht in Java EE ................................ 7 1.5 Komponenten von Java EE ..................................................................... 8 2 NETZWERKPROGRAMMIERUNG MIT SOCKETS .......................... 11 2.1 Von monolithischen zu verteilten Rechnersystemen ............................. 12 2.2 Das Konzept der Sockets ...................................................................... 26 2.3 Protokolle ............................................................................................... 49 2.4 Übungen ................................................................................................ 51 3 REMOTE METHOD INVOCATION .................................................... 57 3.1 Die Funktionsweise von RMI ................................................................. 59 3.2 Die Architektur von RMI ......................................................................... 59 3.3 Entwicklung einer RMI-Anwendung ....................................................... 61 3.4 Ein einfaches RMI-Beispiel .................................................................... 66 3.5 Object by Value und Object by Reference ............................................. 72 3.6 Übungen ................................................................................................ 77 4 SERVLETS ......................................................................................... 81 4.1 Generierung von Webseiten .................................................................. 83 4.2 Dynamische Erzeugung von Seiteninhalten .......................................... 85 4.3 Erstellen von Webanwendungen ........................................................... 90 4.4 Wichtige Elemente der Servlet-API ....................................................... 95 4.5 Annotationen für Servlets .................................................................... 104 4.6 Der Deployment-Deskriptor für Servlets .............................................. 106 4.7 Das Beispielprogramm „Forum“ ........................................................... 108 4.8 Übungen .............................................................................................. 118 5 JAVASERVER PAGES .................................................................... 121 5.1 Skriptelemente ..................................................................................... 125 5.2 Direktiven ............................................................................................. 132 5.3 Aktionen ............................................................................................... 137 5.4 Verwendung von JavaBeans ............................................................... 141 5.5 Tag-Bibliotheken .................................................................................. 146 VII VIII Inhaltsverzeichnis 5.6 Übungen .............................................................................................. 155 6 JAVASERVER FACES .................................................................... 157 6.1 Aufgaben des JSF-Frameworks .......................................................... 160 6.2 Konzepte und Funktionsweise des JSF-Frameworks ......................... 161 6.3 Aufbau von JSF-Anwendungen ........................................................... 170 6.4 Konfiguration einer JSF-Anwendung ................................................... 193 6.5 Übungen .............................................................................................. 214 7 JDBC ................................................................................................ 215 7.1 Die Paketstruktur der JDBC-API .......................................................... 217 7.2 JDBC-Treiber ....................................................................................... 220 7.3 Zugriff auf ein DBMS über JDBC ......................................................... 221 7.4 SQL-spezifische Datentypen ............................................................... 244 7.5 Exceptions bei der Verwendung von JDBC ......................................... 246 7.6 JDBC-Metadaten ................................................................................. 247 7.7 Übungen .............................................................................................. 249 8 ENTERPRISE JAVABEANS ........................................................... 251 8.1 Verteilte Systeme ................................................................................. 253 8.2 Die Idee der Enterprise JavaBeans ..................................................... 254 8.3 Abbildung von Klassen auf Bean-Typen .............................................. 256 8.4 Überblick über die Enterprise JavaBeans-Architektur ......................... 258 8.5 Konzept der Enterprise JavaBean-Typen ............................................ 264 8.6 Session-Beans ..................................................................................... 265 8.7 Der Java EE Application Server Wildfly ............................................... 276 8.8 Übungen .............................................................................................. 285 9 DIE JAVA PERSISTENCE API ........................................................ 301 9.1 Grundlegendes Mapping ..................................................................... 305 9.2 Objektlebenszyklus .............................................................................. 316 9.3 Beziehungen zwischen Objekten und ihre Realisierung in JPA .......... 322 9.4 Die Java Persistence Query Language ............................................... 342 9.5 Transaktionen ...................................................................................... 346 9.6 JPA-Konfiguration mit XML-Dateien .................................................... 349 9.7 Übungen .............................................................................................. 353 BEGRIFFSVERZEICHNIS ................................................................... 355 ABKÜRZUNGSVERZEICHNIS ............................................................ 361 ANHANG A VERWENDUNG EINER CODEBASE BEI RMI ............... 363 Inhaltsverzeichnis IX ANHANG B JNDI ................................................................................. 379 ANHANG C CONNECTION POOLING ............................................... 389 ANHANG D JDBC-TREIBERTYPEN .................................................. 395 LITERATURVERZEICHNIS ................................................................. 399 INDEX .................................................................................................. 401
Description: