Enterprise JavaBeans 3.1 - Das EJB-Praxisbuch für Ein- und Umsteiger

von: Werner Eberling, Jan Leßner

Carl Hanser Fachbuchverlag, 2011

ISBN: 9783446426573 , 386 Seiten

2. Auflage

Format: PDF, OL

Kopierschutz: DRM

Windows PC,Mac OSX für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 31,99 EUR

Mehr zum Inhalt

Enterprise JavaBeans 3.1 - Das EJB-Praxisbuch für Ein- und Umsteiger


 

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