Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Geleitwort
21
Über dieses Buch
22
1 Überblick
29
1.1 Einführung
29
1.1.1 Die Key-Features von Java EE 8
31
1.2 Der Java EE 8-Standard
32
1.2.1 Die Java EE 8-Spezifikation
34
1.2.2 Aus Java EE wird Jakarta EE
35
1.2.3 Java EE-Profile
35
1.2.4 Komponenten und Container
36
1.2.5 Die Datenhaltung
37
1.3 Anwendungsszenarien
38
1.3.1 Szenario 1: Browser ↔ Webcontainer
39
1.3.2 Szenario 2: beliebiger Client ↔ EJB-Container (RMI-IIOP oder JMS)
40
1.3.3 Szenario 3: Browser ↔ Webcontainer ↔ EJB-Container
41
1.3.4 Szenario 4: beliebiger Client ↔ Webcontainer ↔ EJB-Container (SOAP oder REST)
42
1.3.5 Szenario 5: beliebiger Client ↔ EJB-Container (SOAP oder REST)
43
1.4 Der mehrschichtige Aufbau einer Java EE-Anwendung
44
1.4.1 Schicht 1: Präsentation
46
1.4.2 Schicht 2: Steuerung
47
1.4.3 Schicht 3: Geschäftslogik
47
1.4.4 Schicht 4: Persistenz
47
1.5 Die Evolution von HTTP/2 und WebSockets
48
1.5.1 HTTP/1.0
48
1.5.2 HTTP/1.1
49
1.5.3 Ajax
49
1.5.4 Short Polling
50
1.5.5 Long Polling
50
1.5.6 SSE mit dem »EventSource«-Objekt
51
1.5.7 HTTP/2
53
1.5.8 WebSocket
55
1.6 Die Technologien des Java EE 8-Standards
57
1.6.1 Servlets 4.0
60
1.6.2 JSP 2.3
63
1.6.3 EL 3.0
64
1.6.4 JSTL 1.2
64
1.6.5 JSF 2.3
65
1.6.6 WebSockets 1.1
66
1.6.7 JSON-P 1.1
68
1.6.8 JSON-B 1.0
69
1.6.9 JPA 2.2
69
1.6.10 EJB 3.2
69
1.6.11 JMS 2.0
70
1.6.12 CDI 2.0 und DI
71
1.6.13 JTA 1.2
74
1.6.14 JCA 1.7
75
1.6.15 Bean Validation 2.0
76
1.6.16 JAX-WS 2.2
76
1.6.17 JAX-RS 2.1
76
1.7 Los geht's mit der Praxis
77
2 Die Entwicklungsumgebung
79
2.1 Das JDK installieren
79
2.2 Der Java EE-Server GlassFish 5
80
2.2.1 Die Installation des GlassFish Servers
81
2.2.2 Die Verzeichnisse von GlassFish
82
2.2.3 Domänen und Instanzen
85
2.2.4 Die Textkonsole
87
2.2.5 Eine Domäne erzeugen
88
2.2.6 Das Verzeichnis von »domain1«
90
2.2.7 Der Start einer Domäne
91
2.2.8 Falls es nicht wie erwartet funktioniert
92
2.2.9 Die Defaultinstanz mit dem Namen »server«
93
2.2.10 Die Bedienung des DAS über »asadmin«
93
2.2.11 Die Bedienung des DAS über einen Webbrowser
95
2.3 Exkurs: UTF-8
104
2.3.1 ANSI
104
2.3.2 ASCII
105
2.3.3 ISO 8859-1
105
2.3.4 Unicode
106
2.3.5 UTF-16
106
2.3.6 UTF-8
106
2.3.7 Eine HTML-Seite mit UTF-8-Merkmalen erzeugen
108
2.4 Eine Java EE-Anwendung deployen
109
2.4.1 Der Aufbau einer Java EE-Anwendung
109
2.4.2 Java EE-Module
109
2.4.3 Die Enterprise-Archiv-Datei
112
2.4.4 Die Erstellung der Webkomponente (mit UTF-8)
113
2.4.5 Die Erzeugung des Webmoduls und der ».ear«-Datei
114
2.4.6 Die Installation der Enterprise-Anwendung
115
2.5 Das Logging
118
2.5.1 Access-Logging
120
2.6 Das Monitoring
121
2.6.1 Der JMX Connector
124
2.6.2 Das Monitoring über JConsole
125
2.7 Eclipse einsetzen
126
2.7.1 Den GlassFish Server neutralisieren
126
2.7.2 Eclipse IDE for Java EE-Developers
127
2.7.3 Eclipse auf UTF-8 umstellen
128
2.7.4 Die Installation der GlassFish Tools
131
2.7.5 Eine Java EE-Anwendung in Eclipse erzeugen
137
2.7.6 Die Java EE-Anwendung deployen
146
2.7.7 Die Java EE-Anwendung exportieren
148
2.8 Maven
149
2.8.1 Maven installieren
150
2.8.2 Eine Beispielanwendung aus einem Archetype erstellen
152
2.8.3 Der Aufbau der Beispielanwendung
153
2.8.4 Die Project-Object-Model-Datei (POM)
155
2.8.5 Die Lebenszyklen des Maven Builds
157
2.8.6 Maven in der Eclipse IDE
160
2.8.7 Maven mit einem Embedded GlassFish Server laufen lassen
168
2.8.8 Eine eigene Konfiguration in die POM einfügen
171
3 Planung und Entwurf
175
3.1 Die Projektplanung mit Scrum
176
3.1.1 Die Anforderung analysieren
178
3.1.2 Teilanforderungen ermitteln
178
3.1.3 Teilanforderungen priorisieren
179
3.1.4 Teilanforderungen umsetzen
181
3.2 Die Datentypen für den Entwurf
184
3.2.1 Wahrheitswerte
185
3.2.2 »Kurze« Ganzzahlen
185
3.2.3 »Normale« Ganzzahlen
186
3.2.4 »Lange« Ganzzahlen
186
3.2.5 Kommazahlen (und Geldbeträge)
186
3.2.6 Zeichenketten
187
3.2.7 Zeitpunkte
187
3.2.8 Große Datenmengen
189
3.3 Das User-Story-Diagramm
190
3.3.1 Einführung
190
3.3.2 User-Story 0: »As a user I want to be welcomed«
192
3.3.3 User-Story 1: »As a user I want to register«
193
3.3.4 User-Story 2: »As a customer I want to sign in«
196
3.3.5 User-Story 3: »As a customer I want to sell items«
197
3.3.6 User-Story 4: »As a customer I want to search items«
198
3.3.7 User-Story 5: »As a customer I want to buy items«
199
3.4 Die UI-Prototypen
200
3.4.1 Die Datei »index.html«
202
3.4.2 Die Datei »register.html«
204
3.4.3 Die Datei »signin.html«
207
3.4.4 Die Datei »sell.html«
209
3.4.5 Die Datei »search.html«
212
3.4.6 Cascading Stylesheets
213
3.5 Das HTTP-Monitoring
216
3.5.1 Die Verbindung zum Server herstellen
217
3.5.2 Der HTTP-Request
217
3.5.3 Die HTTP-Response
218
3.5.4 Das HTTP-Monitoring in Eclipse
221
3.5.5 Die Firefox-Entwickler-Symbolleiste
224
4 Servlet 4.0
227
4.1 Einführung
228
4.1.1 Ein kleines »Hallo Welt«-Beispiel (manuell)
229
4.1.2 Ein kleines »Hallo Welt«-Beispiel (mit Eclipse)
229
4.2 Ein technischer Überblick
232
4.2.1 Der Lebenszyklus eines Servlets
233
4.2.2 Das HttpServlet
235
4.2.3 Der Deployment-Deskriptor
236
4.2.4 »load-on-startup«
239
4.3 Die Servlet-API
240
4.3.1 Die Annotation »@WebServlet«
240
4.3.2 Die Service-Methoden
241
4.3.3 Die Beantwortung eines HTTP-Requests
242
4.3.4 Formularparameter entgegennehmen
244
4.3.5 Die Inhalte der Methode »doPost()« programmieren
248
4.3.6 Header und Statuscode
250
4.3.7 Redirect
252
4.3.8 Forward
256
4.3.9 Das Logging in einem Servlet
257
4.4 HTTP-Sitzungen
259
4.4.1 Die Dauer einer HTTP-Sitzung
260
4.4.2 Wie eine HTTP-Sitzung funktioniert
260
4.4.3 Das MVC-Entwurfsmuster
261
4.4.4 Eine JavaBean für das Model erstellen
262
4.4.5 Ein Beispiel programmieren
265
4.4.6 Die Gültigkeitsbereiche der Attribute
269
4.4.7 Cookies
270
4.5 Initialisierung und Konfiguration
274
4.5.1 Parameter für die gesamte Webanwendung
275
4.5.2 Parameter für ein einzelnes Servlet
276
4.5.3 Initialisierung mit der Annotation »@WebServlet«
278
4.5.4 Externe Ressourcen einlesen
279
4.6 Dateien hochladen
285
4.6.1 Multipart/Form-Data
285
4.6.2 Die Konfiguration des Servlets
289
4.6.3 Informationen zu einem Part auslesen
290
4.6.4 Hochgeladene Dateien konfigurieren
291
4.6.5 Den Wertebereich einlesen
292
4.7 Asynchrone Servlets
295
4.7.1 Ein erstes asynchrones Beispiel
297
4.7.2 Den asynchronen Prozess innerhalb des Servlets programmieren
300
4.8 Nonblocking I/O
303
4.9 Webfilter
306
4.9.1 Die Methoden eines Filters
306
4.9.2 Die Konfiguration eines Filters
309
4.9.3 Mehrere Filter vor ein Servlet setzen
311
4.9.4 Filter mit Umleitung
313
4.9.5 Filter überspringen
315
4.9.6 Einen Filter in Eclipse erzeugen
317
4.10 WebListener
321
4.10.1 Die Programmierung eines WebListeners
321
4.11 Der Server-Push
324
5 Java Server Pages
329
5.1 Grundlagen
329
5.1.1 Die HTML-Seiten des Onlineshops in JSP-Dateien umbenennen
330
5.1.2 Das automatisch generierte Servlet
331
5.1.3 Eine JSP konfigurieren
333
5.2 Direktiven
334
5.2.1 Die »page«-Direktive
334
5.2.2 Die »taglib«-Direktive
338
5.2.3 Die »include«-Direktive
338
5.2.4 Den Kopfteil und Fußteil der JSPs in gesonderte JSPF-Dateien auslagern
338
5.3 Skripting
343
5.3.1 Ausdrücke
349
5.3.2 Deklarationen
349
5.3.3 Kommentare
350
5.4 Aktionselemente
350
5.4.1 scriptlet
351
5.4.2 text
351
5.4.3 plugin
351
5.4.4 fallback
358
5.4.5 params und param
359
5.4.6 include
359
5.4.7 forward
361
5.4.8 useBean
361
5.4.9 getProperty und setProperty
363
5.5 JSP Custom Tags
366
5.5.1 Ein »simples« JSP-Custom-Element
367
5.5.2 Tag-Dateien programmieren
372
5.6 JSP-EL
374
5.6.1 Grundlegende Elemente
375
5.6.2 String-Operatoren
378
5.6.3 Relationale Operatoren
378
5.6.4 Der »empty«-Operator
378
5.6.5 Der konditionale Operator
379
5.6.6 Klammern und Semikolon
379
5.6.7 Literale
379
5.6.8 Implizite Objekte
380
5.6.9 Der Zugriff auf eine JavaBean über den Gültigkeitsbereich
384
5.6.10 Funktionen
385
5.7 Die Java Standard Tag Library
385
5.7.1 Anwendungsserver ohne JSTL
386
5.7.2 »core« - die JSTL-Kernfunktionalität
388
5.7.3 »fmt« - Formatierungen
393
5.7.4 »functions« - Funktionen
404
5.7.5 »sql« - Datenbankzugriffe
406
5.7.6 »xml« - Die Verarbeitung von XML-Strukturen
408
6 Die relationale Datenbank
411
6.1 Die Einrichtung der Oracle Database
412
6.1.1 Die Installation
412
6.1.2 Sprache, Land und Zeichensatz
417
6.1.3 Die SQL-Befehlszeile einsetzen
418
6.1.4 Transaktionen
421
6.1.5 Der Isolation-Level
422
6.1.6 Die Änderung des Oracle-HTTP-Ports
423
6.2 Die Organisation der Oracle Database
426
6.2.1 Objekte
427
6.2.2 Tablespaces
427
6.2.3 Einen Datenbankbenutzer erzeugen
429
6.2.4 Das Berechtigungskonzept
430
6.3 Performance-Tuning für die Java EE-Anwendung
433
6.3.1 Datenbank-Sitzungen
433
6.3.2 Mit PROCESSES indirekt auch die SESSIONS steuern
434
6.4 Die Erstellung der Datenbanktabellen
435
6.4.1 SQL- und Datenbankkenntnisse
436
6.4.2 Die Erstellung des Datenmodells
436
6.4.3 Die speziellen SQL-Datentypen der Oracle Database
438
6.4.4 Datenbanktabellen erzeugen, löschen und ändern
446
6.4.5 Bedingungen hinzufügen
447
6.4.6 Daten hinzufügen, ändern und löschen
450
6.4.7 Daten selektieren
452
6.4.8 Daten filtern
452
6.4.9 Gruppierungsfunktionen
455
6.4.10 Zeichenketten verarbeiten
456
6.4.11 Sortieren
458
6.4.12 Mehrere Datenbanktabellen verbinden
458
6.4.13 Unterabfragen
461
6.4.14 Primärschlüssel automatisch generieren
462
6.5 Die Indizierung
465
6.6 Das komplette Onlineshop-Beispiel
466
7 JDBC
469
7.1 Der direkte Zugriff per JDBC
469
7.1.1 Die JDBC-Treibertypen
470
7.1.2 Der JDBC-Treiber für die Oracle Database
471
7.1.3 Die Driver Definition in Eclipse
471
7.1.4 Der »Data Source Explorer« in Eclipse
474
7.1.5 Die Driver Definition im Java-Projekt verwenden
478
7.1.6 Der Erstellung einer Datenbankverbindung
480
7.2 Der Zugriff über den Java EE Server
483
7.2.1 Die JVM-Optionsparameter für den Java EE Server
485
7.2.2 Erstellung eines JDBC-Connection-Pools
486
7.2.3 Erstellung einer »DefaultDataSource«
491
7.3 Die Kernfunktionalität der JDBC-API
493
7.3.1 Die Datenbankverbindung über den Java EE Server besorgen
493
7.3.2 Die Datenquelle durch den Webcontainer injizieren lassen
495
7.3.3 Die Angabe der Datenquelle einfach weglassen
496
7.4 Geschäftsdaten speichern
497
7.4.1 Die View (register.jsp)
498
7.4.2 Der Controller (RegisterServlet.java)
499
7.4.3 Das Model (Customer.java)
501
7.5 Geschäftsdaten abfragen
503
7.5.1 Die View (signin.jsp)
503
7.5.2 Der Controller (SigninServlet.java)
505
7.6 Das objektrelationale Mapping
508
7.6.1 Von SQL zu Java
508
7.6.2 Die Umwandlung der JDBC-eigenen Datentypen
512
7.7 Vorbereitete SQL-Anweisungen
517
7.7.1 Die Klasse »PreparedStatement«
517
7.7.2 Von Java zu SQL
522
7.7.3 Das Abrufen automatisch generierter Schlüssel
523
7.8 Binärdaten
527
7.8.1 Bilder speichern
527
7.8.2 Bilder anzeigen
542
7.9 Den Onlineshop fertigstellen
550
7.9.1 Die View (search.jsp)
550
7.9.2 Der Controller (BuyServlet.java)
552
8 Die Java Persistence API
555
8.1 Schritt 1: Die zentrale Konfigurationsdatei
559
8.1.1 Der Aufbau der »persistence.xml«
559
8.1.2 Persistenz-Einheiten definieren
560
8.1.3 Transaktionen (mit JTA oder RESOURCE_LOCAL)
560
8.1.4 Den Bezeichner des Namensdienstes anzeigen
561
8.1.5 Mit »description« eine kurze Beschreibung hinzufügen
562
8.1.6 Den Persistence-Provider angeben
563
8.1.7 Die Verbindungsdaten hinterlegen
563
8.2 Schritt 2: JPA-Entities erstellen
564
8.2.1 Der Grundaufbau einer JPA-Entity
565
8.2.2 Die Konfiguration einer JPA-Entity
565
8.2.3 Die Deklaration in der »persistence.xml«
569
8.2.4 Benennung des Tabellennamens
569
8.2.5 Benennung des Spaltennamens
571
8.2.6 Den Zugriffstyp ändern
572
8.3 Schritt 3: Primärschlüssel definieren
576
8.3.1 Identitätsprobleme von JPA-Entities lösen
578
8.3.2 Zusammengesetzte Primärschlüssel
580
8.3.3 Die automatische Schlüsselgenerierung
584
8.4 Schritt 4: singuläre Attribute konfigurieren
590
8.4.1 Basic-Attribute
590
8.4.2 Transiente Attribute
593
8.5 Schritt 5: Assoziationen anfertigen
594
8.5.1 Grundlagen
595
8.5.2 Die unidirektionale Many-to-one-Assoziation
595
8.5.3 Die bidirektionale One-to-many-many-to-one-Assoziation
599
8.5.4 Die unidirektionale One-to-many-Assoziation
602
8.5.5 Die unidirektionale Many-to-many-Assoziation
605
8.5.6 Die bidirektionale Many-to-many-Assoziation
607
8.5.7 Die bidirektionale One-to-one-Assoziation
608
8.5.8 Die unidirektionale One-to-one-Assoziation
609
8.5.9 Kaskadieren
610
8.5.10 »CascadeType.REMOVE«
612
8.5.11 »orphanRemoval«
614
8.5.12 Fetching-Strategien
615
8.5.13 Listen sortieren
616
8.6 Schritt 6: den EntityManager einsetzen
617
8.6.1 Grundlagen
617
8.6.2 Die Erzeugung eines EntityManagers
618
8.6.3 Die Transaktionen
621
8.6.4 Die zwei Ausprägungen des Persistenz-Kontextes
625
8.6.5 Wann das Persistieren tatsächlich ausgeführt wird
625
8.6.6 Die Zustände im Lebenszyklus einer JPA-Entity
626
8.6.7 Die Methoden für die Datenbankoperationen
627
8.7 Programmierbeispiel: ein JPA-Projekt erzeugen
631
8.7.1 Die allgemeinen Konfigurationen setzen
636
8.7.2 Connection
637
8.7.3 Die Verbindung prüfen
640
8.8 Programmierbeispiel: ORM-Reverse-Engineering
641
8.8.1 Zugangsdaten konfigurieren
641
8.8.2 Die JPA-Entities erstellen
642
8.8.3 Die Klassen in der »persistence.xml« deklarieren
647
8.8.4 Die Elemente für die Schemagenerierung einpflegen
647
8.8.5 Das ORM-Reverse-Engineering mit dem Kontextmenü
650
8.9 Programmierbeispiel: die Registrierung im Webprojekt
651
8.9.1 Das Webprojekt JPA-fähig machen
652
8.9.2 JPA-Entities in Eclipse erzeugen
655
8.9.3 Den erzeugten Quelltext nachbessern
669
8.9.4 Der Quelltext von »Customer.java« und »Item.java«
674
8.9.5 Die Klasse »RegisterServlet.java«
683
8.10 JPQL Grundlagen
685
8.10.1 Eine Query erzeugen
687
8.10.2 Eine Ergebnismenge besorgen
687
8.10.3 Typisierte Ergebnismengen
688
8.10.4 Parameter setzen
688
8.10.5 Einzelne Attribute abfragen
689
8.10.6 Mehrere Attribute abfragen
690
8.11 Programmierbeispiel: das Einloggen im Webprojekt
693
8.12 JPQL - Vertiefung
694
8.12.1 Mehrere JPA-Entities verbinden
695
8.12.2 Gruppierungsfunktionen
700
8.12.3 Unterabfragen
703
8.12.4 Zeichenketten auswerten
704
8.12.5 Fallunterscheidungen
706
8.12.6 Datum und Zeit
708
8.12.7 Individuelle Ergebnismengen mit dem »new«-Operator
709
8.12.8 Über Assoziationsattribute navigieren
711
8.12.9 Änderungen und Löschungen
711
8.12.10 Named Queries
712
8.13 Die Criteria-API
714
8.13.1 Eine einfache Abfrage programmieren
715
8.13.2 Eine Criteria-Query mit einer WHERE-Bedingung
717
8.13.3 Mit dem Canonical Metamodel arbeiten
720
8.14 Fortgeschrittene Themen
723
8.14.1 Spaltenfelder auf mehrere Klassen verteilen
723
8.14.2 Attribute auf mehrere Tabellen verteilen
728
8.14.3 Die Spaltenfelder einer separaten Tabelle als Collection beifügen
733
8.14.4 Vererbung und Polymorphie
734
8.14.5 Konkurrierende Zugriffe steuern
745
8.14.6 Native SQL-Abfragen
751
9 Java Server Faces
757
9.1 Ein erstes Beispiel
760
9.1.1 Die Erstellung eines JSF-Projekts
761
9.1.2 Die Anpassung der »web.xml«
764
9.1.3 Die Erzeugung des Facelets mithilfe von Eclipse
764
9.1.4 Das Facelet einbauen
769
9.1.5 Die Anwendung deployen
769
9.2 Ein Durchstich mit JSF und JPA
769
9.2.1 Die Backing Bean erstellen
771
9.2.2 Ein POJO als JPA-Entity anlegen
772
9.2.3 Eine Backing Bean als Controller programmieren
776
9.2.4 Die Webkomponente »register.xhtml« erstellen
784
9.3 Die implizite Navigation
789
9.3.1 Der Command-Button
789
9.3.2 Der Command-Link
791
9.3.3 Die implizite Navigation von Facelet zu Facelet
793
9.3.4 In der Aktionsmethode eine View-ID als Ziel ansteuern
794
9.4 Die explizite Navigation
798
9.4.1 Navigation-Rules
798
9.4.2 Forward und Redirect
800
9.4.3 Das Programmierbeispiel
801
9.5 JSF-Grundkenntnisse
803
9.5.1 Die Arbeitsphasen
803
9.5.2 Bedeutende JSF-Klassen für die Backing Bean
806
9.5.3 Weitere UI-Komponenten
808
9.5.4 Die »faces-config.xml« verschieben und aufteilen
815
9.6 Meldungen
815
9.6.1 Meldungen für eine UI-Komponente
816
9.6.2 Globale Meldungen
821
9.6.3 Weitere Informationen anhängen
823
9.6.4 Project Stages
827
9.7 Internationalisierung
829
9.7.1 Die Message Bundles
829
9.7.2 Die Anzeige der übersetzten Texte
831
9.7.3 Internationalisierte Messages in der Backing Bean
833
9.8 Die Validierung
834
9.8.1 Das Attribut »required«
834
9.8.2 Standard-Validation-Tags
835
9.8.3 Benutzerdefinierte Validierungen
838
9.8.4 Bean-Validation-Annotationen gemäß der JSR 303
844
9.9 Die Konvertierung
846
9.9.1 convertDateTime
846
9.9.2 convertNumber
849
9.10 Templating
851
9.10.1 Die Include-Komponente
851
9.10.2 Templating-Grundlagen
852
9.10.3 Ein umfangreiches Beispiel mithilfe von Eclipse
856
9.10.4 Die Facelet Tag Library
887
9.11 CSS und Ressourcen
890
9.11.1 Die Bilder des Onlineshops einbinden
890
9.11.2 Die CSS-Datei aus dem Buch
892
9.11.3 Die Sprache über Länderflaggen ändern
894
9.12 Konversationen
898
9.12.1 Die Backing Bean programmieren
898
9.12.2 Die View-Komponenten erstellen
902
9.13 Faces Flows
909
9.13.1 Ein Faces-Flows-Beispiel
909
9.13.2 Der Aufruf eines zweiten Flows
915
9.13.3 User-Story 3 als Flow
917
9.14 Events und Listener
924
9.14.1 ActionEvent
925
9.14.2 ValueChanged-Event
928
9.14.3 DataModel-Event
930
9.14.4 Phase-Event
934
9.14.5 System-Event
936
9.15 Ajax einsetzen
938
9.15.1 Ajax-Grundlagen
939
9.15.2 Die »ajax«-Komponente von JSF
941
9.16 HTML5-friendly Markup
950
9.16.1 Pass-through-Attribute
951
9.16.2 Pass-through-Elemente
952
10 Enterprise JavaBeans
953
10.1 Session-Bean-Grundlagen
953
10.1.1 Die Namenskonventionen bei Session Beans
954
10.1.2 Die Business-Methoden von Session Beans
955
10.1.3 Der entfernte Aufruf über RMI-IIOP
956
10.1.4 Der lokale Aufruf
958
10.1.5 Business-Interfaces
960
10.1.6 Die optionalen Deployment-Deskriptoren
964
10.2 Programmierbeispiel: EJB und Standalone-Client
966
10.2.1 Die Erzeugung des EJB-Projekts
966
10.2.2 Die Stateless Session Bean erzeugen
969
10.2.3 Die Business-Methode programmieren
971
10.2.4 Das Deployment
972
10.2.5 Die Erzeugung des Application-Client-Projekts
974
10.2.6 Das EJB-Modul einbinden
976
10.2.7 Die Bibliothek »gf-client.jar« hinzufügen
977
10.2.8 Die Verknüpfung über JNDI
978
10.2.9 Der JNDI-Lookup für den entfernten Aufruf
979
10.2.10 Die »jndi.properties«
981
10.2.11 Die JNDI-Properties für weitere gängige Java EE Server
982
10.2.12 Falls Sie über zwei Übungsrechner in einem Netzwerk verfügen
982
10.2.13 Das Beispiel ausprobieren
983
10.3 Programmierbeispiel: EJB, JSF und JPA
985
10.3.1 Die Erstellung eines lokalen Business-Interface
985
10.3.2 Ein Java-Server-Faces-Projekt erstellen
986
10.3.3 Eine JSF-Backing-Bean
989
10.3.4 Ein Facelet hinzufügen
990
10.3.5 JPA einsetzen
991
10.4 Transaktionen
995
10.4.1 Container-managed Transactions
995
10.4.2 Bean-managed Transactions
1000
10.5 Unterschiedliche Session-Bean-Typen
1002
10.5.1 Stateless Session Bean
1002
10.5.2 Stateful Session Beans
1006
10.5.3 Singleton Session Beans
1013
10.6 Asynchrone Business-Methoden
1015
10.7 JMS und Message-driven Beans
1019
10.7.1 JMS-Grundlagen
1019
10.7.2 Die serverseitige Konfiguration
1024
10.7.3 Die clientseitige Konfiguration
1027
10.7.4 Die Interfaces der Classic JMS API
1033
10.7.5 Ein einfaches Beispiel mit der Classic JMS API
1036
10.7.6 Das Classic-JMS-Queue-Beispiel optimieren
1046
10.7.7 Einen JMS-Classic-Topic-Client erstellen
1056
10.7.8 Eine Session Bean für den JMS-Versand
1067
10.7.9 Die Simplified JMS API
1069
10.7.10 Message-driven Beans
1075
10.8 Der Timer-Service
1089
10.8.1 Einen Timer programmieren
1089
10.8.2 Der zeitplangesteuerte Timer
1095
11 Webservices und JSON
1099
11.1 JSON-P
1100
11.1.1 Die JSON-P Model-API
1104
11.1.2 Die JSON-P Streaming API
1121
11.1.3 Die JSON-P Pointer API
1122
11.1.4 Die JSON-P Patch API
1125
11.2 JSON-B
1126
11.2.1 Serialisierung und Deserialisierung
1127
11.2.2 Collection serialisieren und deserialisieren
1132
11.2.3 Die Konvertierung konfigurieren
1133
11.3 JAX-WS
1139
11.3.1 Einführung
1139
11.3.2 Programmierbeispiel: JAX-WS in drei Schritten
1142
11.3.3 Das WSDL-Dokument
1147
11.3.4 Programmierbeispiel: der JAX-WS-Webservice-Client
1154
11.3.5 Weitere wichtige JAX-WS-Bestandteile
1158
11.3.6 Programmierbeispiel: File-Uploader
1161
11.3.7 Big Webservices und die Business Process Execution Language
1164
11.3.8 Programmierbeispiel: EJB und JAX-WS
1165
11.4 JAX-RS
1166
11.4.1 Ein einfaches JAX-RS Beispiel
1167
11.4.2 Einen Kunden anzeigen
1172
11.4.3 Registrierung im Onlineshop
1179
11.4.4 Konsumierender Webservice-Client
1181
Index
1191