Masterkurs Client/Server-Programmierung mit Java
Dietmar Abts Masterkurs Client/Server- Programmierung mit Java Anwendungen entwickeln mit Standard-Technologien 4. Auflage
Dietmar Abts FB Wirtschaftswissenschaften Hochschule Niederrhein Mönchengladbach, Deutschland ISBN 978-3-658-09920-6 DOI 10.1007/978-3-658-09921-3 ISBN 978-3-658-09921-3 (ebook) Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliograe; detaillierte bibliograsche Daten sind im Internet über http://dnb.d-nb.de abrufbar. Springer Vieweg 1. Auage 2003 erschien unter dem Titel Aufbaukurs JAVA 2. Auage 2007 erschien unter dem Titel Masterkurs JAVA Springer Fachmedien Wiesbaden 2003, 2007, 2010, 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, Mikroverlmungen 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 Warenzeichenund 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 ist Teil der Fachverlagsgruppe Springer Science+Business Media (www.springer.com)
Vorwort zur vierten Auflage Das vorliegende Buch bietet eine kompakte Einführung in aktuelle Technologien zur Entwicklung von modernen Client/Server-Anwendungen auf der Basis von Java SE mit zahlreichen Programmbeispielen und Übungsaufgaben. Die verschiedenen Themen können mit Grundkenntnissen der Programmiersprache Java erarbeitet werden. Gegenüber der dritten Auflage wurden zahlreiche Verbesserungen und Aktualisierungen vorgenommen. Das Kapitel zu JDBC der dritten Auflage wurde zugunsten neuer Themen entfernt: WebSocket-Protokoll für die bidirektionale Verbindung zwischen einer Webanwendung und einem WebSocket-Server, REST-basierte Web Services mit JAX-RS. Die Programmbeispiele wurden mit Java SE 8 entwickelt und sind für die aktuellen Versionen der hier eingesetzten Produkte und Frameworks lauffähig: Apache ActiveMQ Apache Tomcat WebSocket-Implementierung Tyrus Apache XML-RPC Metro Web Service Stack JAX-RS-Implementierung Jersey Der Quellcode der Programmbeispiele und die Lösungen der Übungsaufgaben sind im Internet auf der Website des Verlags direkt neben den bibliographischen Angaben zu diesem Buch verfügbar: www.springer-vieweg.de Danken möchte ich Frau Sybille Thelen vom Lektorat IT für die gute Zusammenarbeit sowie meinen Leserinnen und Lesern für die guten Vorschläge, die in dieser Auflage berücksichtigt wurden. Ratingen, April 2015 Dietmar Abts abts@hs-niederrhein.de www.dietmar-abts.de
Inhaltsverzeichnis 1 Einleitung... 1 1.1 Vorbemerkungen... 1 1.2 Verteilte Systeme... 3 1.3 Grundlagen zu TCP/IP... 15 1.4 Java-Klassen für IP-Adressen und Sockets... 20 1.5 Aufgaben... 23 Nachrichtenbasierte Kommunikation 2 Verbindungslose Kommunikation mit UDP... 25 2.1 Das Protokoll UDP... 25 2.2 DatagramSocket und DatagramPacket... 26 2.3 Ein Echo-Server und -Client... 29 2.4 Vorgegebene Socket-Verbindungen... 32 2.5 Online-Unterhaltung... 34 2.6 Punkt-zu-Mehrpunkt-Verbindungen... 38 2.7 Aufgaben... 41 3 Client/Server-Anwendungen mit TCP... 43 3.1 Das Protokoll TCP... 43 3.2 TCP-Sockets... 44 3.3 Ein Echo-Server und -Client... 48 3.4 Thread-Pooling... 53 3.5 Ein Framework für TCP-Server... 56 3.6 Beenden eines Datenstroms ohne Verbindungsabbau... 59 3.7 Ein Proxy zum Aufruf entfernter Methoden... 61 3.8 Ein Chat-Programm... 70 3.9 Klassen über das Netz laden... 76 3.10 Aufgaben... 79
VIII Inhaltsverzeichnis 4 Nachrichtendienste mit JMS... 83 4.1 Java Message Service... 84 4.2 Das Point-to-Point-Modell... 87 4.3 Das Request/Reply-Modell... 99 4.4 Das Publish/Subscribe-Modell... 102 4.5 Dauerhafte Subscriber... 107 4.6 Filtern von Nachrichten... 111 4.7 Transaktionen... 114 4.8 Fallbeispiel Händler/Lieferant... 119 4.9 Aufgaben... 125 Objekt-basierte Kommunikation 5 Aufruf entfernter Methoden mit RMI... 127 5.1 Ein einführendes Beispiel... 128 5.2 Remote Method Invocation... 131 5.3 Dienstauskunft... 140 5.4 Transport by reference... 141 5.5 Mobile Agenten... 145 5.6 Callbacks... 149 5.7 RMI mit IIOP... 155 5.8 Aufgaben... 159 Web-basierte Kommunikation 6 HTTP-Kommunikation im Web... 161 6.1 Das Protokoll HTTP... 161 6.2 Ein einfacher Webserver... 170 6.3 Protokollierung von HTTP-Nachrichten... 183 6.4 Aufgaben... 187
Inhaltsverzeichnis IX 7 Bidirektionale Kommunikation mit WebSocket... 189 7.1 Das WebSocket-Protokoll... 189 7.2 Implementierung einer einfachen WebSocket-Anwendung... 191 7.3 Server Push... 196 7.4 Eine Chat-Anwendung... 200 7.5 Aufgaben... 203 8 XML Remote Procedure Call (XML-RPC)... 207 8.1 Grundkonzept und erstes Beispiel... 207 8.2 XML-RPC-Datentypen... 213 8.3 Dynamische Proxies... 221 8.4 XML-RPC mit Apache Tomcat nutzen... 223 8.5 Aufgaben... 225 9 SOAP-basierte Web Services mit JAX-WS... 227 9.1 Basiskonzepte von Web Services... 228 9.2 Entwicklungsplattform und API... 233 9.3 Ein erstes Beispiel... 235 9.4 Ein Web Service zur Artikelverwaltung... 240 9.5 Web Services mit Apache Tomcat veröffentlichen... 244 9.6 Oneway-Operationen... 246 9.7 Asynchrone Aufrufe... 248 9.8 Transport von Binärdaten... 252 9.9 SOAP Message Handler... 259 9.10 Der Contract-First-Ansatz... 269 9.11 Aufgaben... 274 10 REST-basierte Web Services mit JAX-RS... 277 10.1 Grundprinzipien von REST-Architekturen... 277 10.2 Entwicklungsplattform und API... 280 10.3 Ein erstes Beispiel... 281 10.4 CRUD-Operationen... 286
X Inhaltsverzeichnis 10.5 REST-Services mit Apache Tomcat veröffentlichen... 297 10.6 JAXB... 299 10.7 JAXB in REST-Services und -Clients nutzen... 305 10.8 Upload und Download von Dateien... 309 10.9 Verwaltung von Kontaktdaten als REST-Service... 312 10.10 HTTP-Authentifizierung und SSL... 323 10.11 Aufgaben... 329 Quellen im Internet... 331 Literaturhinweise... 333 Sachwortverzeichnis... 335