Enterprise JavaBeans 3.1 (eBook)
386 Seiten
Carl Hanser Fachbuchverlag
978-3-446-42657-3 (ISBN)
EJB 3.1 LEICHT GEMACHT
- Aktuelle und praxisorientierte Einführung in EJB 3.1
- Lernen durch Selbermachen: Die einzelnen Teilaspekte von EJB 3 werden an einer Vielzahl praktischer Beispiele dargestellt.
- Neu in der 2.A.: Kochbuchteil mit Rezepten für häufig wiederkehrende Fragestellungen
- Im Internet: Quellcode der Beispiele aus dem Buch
Wenn Sie sich nicht durch die mehrere Hundert Seiten starke Spezifikation von Enterprise JavaBeans kämpfen und mühsam selbst herausfinden wollen, was nun genau wie in Projekten wirklich funktioniert, dann sind Sie hier genau richtig. Werner Eberling und Jan Leßner stellen in diesem Buch die Standards EJB 3.1 und JPA 2.0 anschaulich vor und reichern diese mit ihrer Praxiserfahrung aus vielen Projekten an.
Ein- und Umsteiger in EJB 3.1 erhalten hier eine kompakte Darstellung der grundlegenden Aspekte von komponentenbasierten Mehrschichtsystemen und der Rolle, die EJBs JPA-Entitäten darin spielen. Alle Aspekte beider Technologien werden anhand zahlreicher Beispiele und einer durchgehenden Applikation detailliert dargestellt und durch wertvolle Praxistipps ergänzt.
Im neuen Kochbuchteil finden Sie Lösungen für häufig wiederkehrende Fragestellungen rund um EJBs und Enterprise-Applikationen, die Ihnen unmittelbar bei der Lösung Ihrer Aufgaben im Projekt helfen.
Aus dem Inhalt: Technische Grundlagen, Erste Schritte, Session Beans, Entities, Message-Driven Beans, EJB-Konfiguration, Transaktionen, Sicherheit, Noch mehr EJBs, Blick über den Tellerrand: Testen, Entwurfsmuster, Migration zu EJB3, Beispielanwendung: EinStein würfelt nicht, Kochrezepte
Systemvoraussetzungen für eBook-inside: Internet-Verbindung und eBookreader Adobe Digital Editions
Werner Eberling und Jan Leßner sind Software-Entwickler, Berater und Trainer bei der Mathema Software GmbH. Sie unterstützen ihre Kunden vor allem mit Know-how aus den Bereichen verteilte Systeme, Java Enterprise-Technologien und objektorientierte Applikations-Architektur. Außerdem sind sie u.a. an dem OpenSource-Projekt CUBA beteiligt, veröffentlichen regelmäßig Beiträge in Fachmagazinen und halten Vorträge auf einschlägigen IT-Konferenzen.
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
"10 Blick über den Tellerrand (S. 287-288)
10.1 Testen von EJBs
Ein Aspekt, der beim Einsatz einer Technologie wie EJB nicht außen vor bleiben darf, ist die Frage nach der Testbarkeit. Neben der Zeit, die für die Erstellung von neuem Code aufgewendet wird, muss auch die Zeit, die für die testweise Ausführung benötigt wird, ins Kalkül einbezogen werden, will man die Effizienz einer Technologie bewerten. Denn was hilft das einfachste Programmiermodell, wenn die eingesparte Zeit wegen zu komplizierter Testbedingungen wieder verloren geht. Vor diesem Hintergrund war ein Ziel, das sich das EJB-Spezifikationsteam mit dem neuen Standard auf die Fahnen geschrieben hat, das Thema Testbarkeit. Mit den bisherigen Standards war eine testgetriebene Entwicklung nur sehr schwer möglich.
Aufgrund zeitraubender Build/Deploy-Zyklen gestaltete sich das Testen von EJBs innerhalb eines Application-Servers ausgesprochen mühsam. Außerhalb des Servers war es meist nur sehr eingeschränkt möglich, da die Beans eine Menge an programmatisch angesprochenen Serverdiensten benötigten – allen voran den Namensdienst. Welche Möglichkeiten EJB3 im Hinblick auf das Thema Testen zu bieten hat, was dabei dem Entwickler eine Hilfestellung bietet und was noch an Stolpersteinen im Weg liegt, soll nun betrachtet werden.
10.1.1 Warum Testen?
Die bereits angesprochene schwere Testbarkeit von EJBs nach altem Standard hat dazu geführt, dass dieses wichtige Thema im Bereich der Entwicklung von EJB-basierten Systemen in der Vergangenheit oft sehr stiefmütterlich behandelt wurde. Der damit verbundene Aufwand war den Projektverantwortlichen häufig ein Dorn im Auge, und Aussagen wie „Wir haben keine Zeit zum Testen“ oder „Während wir testen, können wir keine neuen Features implementieren“ waren leider an der Tagesordnung.
Nun sind aber Entwickler auch Menschen, denen bekanntlich Fehler unterlaufen. Das ist so weit kein Problem, solange man sich dieser Tatsache bewusst ist und versucht, diese Fehler zu entdecken und zu beseitigen, falls sie sich eingeschlichen haben. Hierbei gilt: Je früher ein Fehler entdeckt wird, umso leichter ist er meist zu beseitigen, wobei sich seine negativen Auswirkungen minimieren. Aus diesem Grund sollte der Test einer Software so früh wie möglich einsetzen.
Die Integration der einzelnen Teile einer Anwendung oder gar deren Abnahme sind als Zeitpunkte deutlich zu spät. Natürlich müssen auch hier Tests stattfinden. Während der Integration wird das Zusammenspiel der einzelnen Teile geprüft (im so genannten Integrationstest), und während der Abnahme muss natürlich das fachlich korrekte Verhalten der Anwendung nachgewiesen werden (über so genannte fachliche Abnahmetests).
Das Testen sollten aber schon viel früher, bereits bei der Entwicklung der einzelnen Bestandteile (englisch: Units), einsetzen. Die hierfür zuständige Variante von Tests wird als Unit-Test bezeichnet. Unit-Tests sind automatisierte Tests, die in Form von Testklassen neben den eigentlichen Anwendungsklassen bereitgestellt werden. Hierbei wird oft eine 1:1-Beziehung zwischen Anwendungsklasse und Testklasse empfohlen, d.h. eine Testklasse ist für eine Anwendungsklasse zuständig."
| Erscheint lt. Verlag | 1.1.2011 |
|---|---|
| Verlagsort | München |
| Sprache | deutsch |
| Themenwelt | Mathematik / Informatik ► Informatik ► Programmiersprachen / -werkzeuge |
| Schlagworte | Enterprise Java • enterprise java beans • Enterprise JavaBeans • JavaBeans • Java EE |
| ISBN-10 | 3-446-42657-4 / 3446426574 |
| ISBN-13 | 978-3-446-42657-3 / 9783446426573 |
| Informationen gemäß Produktsicherheitsverordnung (GPSR) | |
| Haben Sie eine Frage zum Produkt? |
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich