Suchen und Finden
Inhalt
8
Einführung
14
Bevor es losgeht
14
Zielgruppe und Leseregeln
15
Application-Server, Tools und Codebeispiele
16
Formatierungen und Sprachgebrauch
17
Danksagung
18
Feedback
18
1 Technische Grundlagen undhistorische Entwicklungen
20
1.1 Client-Server-Systeme
20
1.2 Die 3-Schichten-Architektur
23
1.3 Ein bisschen Komponenten-Theorie
26
1.4 EJBs und die Java Enterprise Edition
29
1.5 Handwerkszeug aus der Java Standard Edition 5
31
1.5.1 Annotationen
31
1.5.2 Generics
32
1.5.3 Autoboxing
33
2 Erste Schritte
34
2.1 Die Neuheiten kurz gefasst
34
2.2 Hello World
37
2.2.1 Installation der JEE-Plattform
37
2.2.2 Implementierung einer EJB
38
2.2.3 Installation der EJB (Deployment)
39
2.2.4 Implementierung des Clients
41
2.2.5 Aufräumen
44
2.3 Spielregeln
45
2.3.1 Rollen
45
2.3.2 Einschränkungen im Programmiermodell
46
2.4 Wie es weitergeht
49
3 SessionBeans
50
3.1 Einführung
50
3.2 Stateless SessionBeans
52
3.2.1 Bestandteile einer Stateless SessionBean
54
3.2.2 Implementierung im Detail
57
3.2.3 Lokaler Zugriff auf Stateless SessionBeans
63
3.2.4 Stateless SessionBeans als Webservice-Endpunkt
67
3.2.5 Asynchrone Bean-Methoden
71
3.2.6 Neue Beans und alte Clients – EJB2-Sicht auf EJB3-SessionBeans
73
3.3 Stateful SessionBeans
74
3.3.1 Bestandteile einer Stateful SessionBean
76
3.3.2 Lifecycle und Event-Callback-Methoden
78
3.3.3 Abschließende Bemerkungen
82
3.4 Singleton SessionBeans
82
3.4.1 Bestandteile einer Singleton SessionBean
83
3.4.2 Steuerung des parallelen Zugriffs
85
3.5 Paralleler Zugriff auf SessionBeans
89
3.6 Session-Context
90
3.7 Exceptions
92
3.7.1 Applikations- und System-Exception
92
3.8 Alternative zur Annotation: Der XML-Deskriptor
94
4 Entities
98
4.1 Das Problem mit der Persistenz
98
4.2 Einige Grundlagen
100
4.2.1 Die Data-Source
100
4.2.2 Die wichtigsten Begriffe vorweg
102
4.3 Eine erste Datenbankanwendung
107
4.3.1 Der Lebenszyklus von Entities
111
4.3.2 Grundfunktionen des Entity-Managers
115
4.4 O/R-Mapping
117
4.4.1 Abbildung von Klassen auf Tabellen
117
4.4.2 Abbildung von Attributen auf Spalten
121
4.4.3 Abbildung von Vererbungen
136
4.4.4 Steuerung des Persistence-Providers
144
4.5 Beziehungen
147
4.5.1 Bi- und unidirektionale Beziehungen verstehen
147
4.5.2 Beziehungstypen
149
4.5.3 1:1-Beziehungen
150
4.5.4 1:N-Beziehungen
154
4.5.5 N:1-Beziehungen
160
4.5.6 N:M-Beziehungen
162
4.5.7 Noch mehr Beziehungen
165
4.6 Validierung
168
4.6.1 Validierte Entities in 5 Minuten
168
4.6.2 Bean Validation und die persistence.xml
169
4.6.3 APIs verheiraten
171
4.7 Abfragen
172
4.7.1 JPA-Schnittstellen für Abfragen
175
4.7.2 Alles Wesentliche auf einen Blick
176
4.7.3 GROUP-BY und HAVING
183
4.7.4 SELECT
184
4.7.5 ORDER-BY
185
4.7.6 Unterabfragen
185
4.7.7 Massenlöschungen und -aktualisierungen
186
4.7.8 SQL-Abfragen
187
4.7.9 Benannte Abfragen
189
4.7.10 Einfach typisierte Abfragen
190
4.8 Das Criteria-API
190
4.8.1 Das Metamodell
192
4.9 Noch mehr Entities
196
4.10 Entities im Rückblick
198
5 Message-Driven Beans
200
5.1 Einführung
200
5.2 Nachrichtenbasierte Systeme mit JMS
201
5.2.1 Der Nachrichtenserver als Kommunikationsbus
202
5.2.2 Einer sendet, einer empfängt – das Punkt-zu-Punkt-Modell
202
5.2.3 Einer sendet, viele hören zu – das Publish-Subscribe-Modell
207
5.3 Bestandteile einer Message-Driven Bean
209
5.3.1 Lebenszyklus einer Message-Driven Bean
209
5.3.2 Bestandteile einer Message-Driven Bean
210
5.4 Alternative zur Annotation: Der XML-Deskriptor
213
5.5 Abschließende Bemerkungen
214
6 EJB-Konfiguration
216
6.1 Einführung
216
6.2 Der lokale JNDI-Kontext
216
6.2.1 Dependency-Lookup
218
6.2.2 Dependency Injection
218
6.3 EJB-Referenzen
219
6.4 Konfigurations-Parameter
223
6.5 Ressourcen-Manager-Fabriken
224
6.6 Nachrichtenziele
227
6.7 Noch mehr referenzierte Objekte
229
6.8 Abschließende Bemerkungen zum Deployment-Deskriptor
230
7 Transaktionen
234
7.1 Systemkonsistenz in Komponentenarchitekturen
234
7.1.1 Ressourcen
236
7.2 Container-verwaltete Transaktionen
239
7.2.1 Zurückrollen von CMTs
240
7.2.2 Deklaration von CMTs
243
7.2.3 CMTs in Message-Driven Beans
247
7.2.4 Situationen mit unspezifiziertem Transaktionskontext
247
7.3 Bean-verwaltete Transaktionen
248
7.4 Transaktionale Ressourcen
251
7.4.1 Persistenzkontexte
251
7.4.2 Data-Sources
251
7.4.3 JMS-Verbindungen
253
7.4.4 Stateful SessionBeans und SessionSynchronization
254
7.5 Client-verwaltete Transaktionen
257
8 Sicherheit
260
8.1 Einführung
260
8.2 Wer klopft denn da? – Die Authentifizierung
260
8.2.1 Erste Schritte
260
8.2.2 Der Caller-Principal
262
8.2.3 Principal Delegation
262
8.2.4 Technische Details der Authentifizierung des Clients
263
8.2.5 Serverseitige Authentifizierung
269
8.3 Rollenbasierte Autorisierung
273
8.3.1 Deklaratives Sicherheitsmanagement
274
8.3.2 Programmatisches Sicherheitsmanagement
276
8.3.3 Abbildung der logischen Rollen
277
8.3.4 Grenzen des rollenbasierten Ansatzes
278
8.4 Datenverschlüsselung und Integrität
278
9 Noch mehr EJBs
282
9.1 Timed Objects
282
9.2 Einfache Aspektorientierung mit EJB3
287
9.2.1 Interceptor-Methoden
288
9.2.2 Interceptor-Klassen
291
9.2.3 Interceptoren für Timer-Methoden
295
9.2.4 Aspekte über XML-Deskriptoren
295
9.3 Ein alternativer Weg zur Remote-Referenz: Der Handle
297
9.4 EJBs ohne Application-Server betreiben
298
10 Blick über den Tellerrand
300
10.1 Testen von EJBs
300
10.1.1 Warum Testen?
300
10.1.2 Unit-Tests mit Entities und Dependency-Injection
302
10.1.3 EJB lite als Test-Umgebung
303
10.1.4 Weitere Test-Alternativen
304
10.2 Wichtige EJB-Entwurfmuster
305
10.2.1 Evtl. bekannte Muster sind weiter gültig
305
10.2.2 Neue Muster mit EJB 3.0
308
10.2.3 Was es nicht mehr gibt
309
10.3 Migration auf EJB3
310
10.3.1 Drei (und eine) Migrations-Strategien
311
10.3.2 Migrieren, aber wie?
313
11 EinStein würfelt nicht
318
11.1 Zum Spiel
318
11.2 Funktionsweise der Spielplattform
320
11.3 Technisches Modell
321
11.3.1 Versuchungen
321
11.3.2 Design-Entscheidungen
322
11.3.3 Das Komponentenmodell
324
11.3.4 Das Entitätenmodell
325
11.3.5 Die Package-Struktur
326
11.4 Hingucker
327
11.5 Erweiterungsmöglichkeiten
330
11.6 Einige Anmerkungen zum Schluss
331
12 Kochrezepte
334
12.1 Ein einfacher lokaler Read-Only-Cache
335
12.2 Getaktete Datenquelle
336
12.3 Vereinfachtes EJB Deployment
338
12.4 EJB und JSF
339
12.4.1 ManagedBeans als EJB-Client
339
12.4.2 SessionBeans als ManagedBeans
340
12.5 Fehler aus Webservices melden
342
12.6 Stateless SessionBean als RESTful Webservice
344
12.7 Dateiexport
346
12.8 Eine Basis-Entität
349
12.9 Suchfunktion
352
12.10 Bitte umblättern
356
12.10.1 Variante 1 – Alles dem Client überlassen
356
12.10.2 Variante 2 – Verwaltung im Application-Server
356
12.10.3 Variante 3 – Verwaltung in der Datenbank
358
12.10.4 Noch eine Variante aus dem Internet
360
12.11 Lokale Tests mit OpenEJB
361
12.11.1 SessionBeans testen
361
12.11.2 JPA-Tests
362
Literatur
366
Register
368
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.