lehrerbibliothek.deDatenschutzerklärung
J2EE und JBoss J2EE und JBoss Grundlagen und Profiwissen  Verteilte Enterprise Applikationen auf Basis von J2EE, JBoss & Eclipse Verteilte Enterprise Applikationen auf Basis von J2EE, JBoss & Eclipse
J2EE und JBoss
J2EE und JBoss Grundlagen und Profiwissen


Verteilte Enterprise Applikationen auf Basis von J2EE, JBoss & Eclipse Verteilte Enterprise Applikationen auf Basis von J2EE, JBoss & Eclipse

Torsten Langer, Daniel Reiberg

Carl Hanser Verlag
EAN: 9783446405080 (ISBN: 3-446-40508-9)
713 Seiten, hardcover, 18 x 25cm, November, 2005

EUR 44,90
alle Angaben ohne Gewähr

Umschlagtext
Java-Enterprise-Anwendungen benötigen heutzutage einen leistungsstarken Applicationserver. Mit JBoss steht den J2EE-Entwicklern ein Applicationserver zur Verfügung, der nicht nur leistungsstark, sondern auch kostenlos ist.

Dieses Buch zeigt Ihnen, wie Sie mit J2EE und JBoss eine komplette Unternehmensanwendung entwickeln können. Ausführlich stellen die Autoren die einzelnen J2EE-Technologien vor und zeigen, wie sie im Zusammenspiel mit JBoss funktionieren. Sie erläutern, wie eine J2EE-Anwendung angepasst werden muss, damit sie innerhalb eines JBoss Applicationservers lauffähig ist.



So profitieren Sie!

* Sie erhalten umfassende Informationen über das Zusammenspiel von J2EE und JBoss

* An der kompletten Beispielapplikation können Sie alle Aspekte der J2EE/JBoss-Entwicklung unmittelbar nachvollziehen.

* Verwendet werden Open-Source-Werkzeuge für die Entwicklung, wie z. B. Eclipse, XDoclet und Ant

* Topaktuell: In einem Abschnitt zu EJB 3.0 erfahren Sie schon heute, wie mit JBoss noch effizientere J2EE Applikationen entwickelt werden können.



Die Themen:

* JBoss Konfigurationen & Tuning

* JDBC & JCA

* Sockets, RMI, CORBA & Web Services

* EJBs: Session Beans, Entity Bean, Message Driven Beans & Timer

* Migration zu EJB 3.0

* Web-basierte Anwendungen: JSP, Servlets, Struts & JSF

* JMS

* JMX
Rezension
Das vorliegende Buch ist ein hervorragendes Werk über J2EE und JBoss. Es vermittelt alles über J2EE und JBoss um mittelgroße und große Projekte zu realisieren.
Zielgruppe dieses Buches sind Java-Programmierer. Anfängern in Sachen J2EE werden anhand von vielen Code-Beispielen, Illustration und meines Erachtens sehr gut gewählten Anwendungsfällen alle J2EE Grundlagen vermittelt.
Für Fortgeschrittene und Profis ist das Buch ein gutes Nachschlagewerk.

Empfehlenswert!

Tim Sonner, lehrerbibliothek.de
Inhaltsverzeichnis
1 Einführung 1
1.1 Motivation 1
1.2 Grundlage von J2EE: die 4-Tier-Architektur 3
1.2.1 2-Tier-Architekturen 3
1.2.2 3-Tier-Architekturen 4
1.2.3 4-Tier-Architektur einer webbasierten Anwendung 5
1.2.4 Webbasierte Anwendungen mit J2EE 7
1.3 Vorgehensweise im Buch 8

2 JBoss, Eclipse und XDoclet 11
2.1 JBoss 11
2.1.1 Download & Installation 11
2.1.2 Start des Servers 12
2.1.3 Die JMX-Console 13
2.1.4 Anhalten des Servers 14
2.1.5 Basis-Konfigurationen 14
2.2 Eclipse, XDoclet & die JBoss-IDE 17

3 JCA 21

4 JDBC 25
4.1 Datenbanktreiber 25
4.1.1 Laden des Treibers über den ClassLoader 26
4.1.2 Festlegen des Treibers über Systemparameter 27
4.2 Aufbau einer Verbindung 27
4.3 Einen SQL-Befehl ausführen 29
4.3.1 PreparedStatement: Einen vorbereiteten SQL-Befehl ausführen 29
4.3.2 Statement: Einen unvorbereiteten SQL-Befehl ausführen 34
4.4 Transaktionen 34
4.5 BLOBs auslesen 35
4.6 Metadaten auslesen 36
4.6.1 Metadaten einer Datenbank auslesen 36
4.6.2 Metadaten einer Tabelle auslesen 36
4.7 Datenbanken innerhalb eines Containers erfragen 37

5 JMX 39
5.1 Beispiel 1: TableCopyMBean 40
5.1.1 Das Interface 40
5.1.2 Die MBean-Klasse 41
5.1.3 Der Delegat 43
5.1.4 Der Deployment-Deskriptor 44
5.2 Beispiel 2: SimpleCacheMBean 45
5.2.1 Das Interface 45
5.2.2 Die MBean-Klasse 46
5.2.3 Der Deployment-Deskriptor 47
5.2.4 Ein MBean-Connector 48
5.3 Verpacken & Deployen der MBeans 49

6 Socketprogrammierung 51
6.1 Grundlagen 52
6.1.1 Zeichensatzgebundenes Lesen und Schreiben von Daten 52
6.1.2 Socket-Verbindungen herstellen 54
6.1.3 SocketTools: Eine Ansammlung nützlicher Socket-Routinen 57
6.1.4 Eine POST-Anfrage an eine Webseite senden 58
6.2 Eine einfache Client/Server-Applikation 60
6.2.1 Vorgehensweise 60
6.2.2 Der Client 61
6.2.3 Der Server 62
6.3 Ein Framework für eine Client/Server-Applikation 64
6.3.1 Die grundlegende Architektur 64
6.3.2 MultiClientServer 65
6.3.3 MultiClientNonBlockingServer 67
6.3.4 AbstractClientHandler 68
6.4 Anwendung des Frameworks am Beispiel 69
6.4.1 KursabfrageClient 70
6.4.2 KursabfrageHandler 71
6.4.3 StartKursabfrageClient & StartKursabfrageServer 73
6.5 Der C#/.NET-Client 74

7 RMI & CORBA 77
7.1 Was ist Middleware? Was ist RMI? 77
7.2 RMI mit JRMP80
7.2.1 Schritt 1: Interface definieren 81
7.2.2 Schritt 2: Server schreiben 82
7.2.3 Schritt 3: Server am Broker anmelden 84
7.2.4 Der Client 85
7.3 RMI mit IIOP 86
7.3.1 Schritt 1: Interface definieren 86
7.3.2 Schritt 2: Server schreiben 88
7.3.3 Schritt 3: Server am Broker anmelden 90
7.3.4 Der Client 92
7.4 Implementierung einer RMI/JRMP&IIOP-Applikation 94
7.4.1 Schritt 1: Interface definieren 94
7.4.2 Schritt 2: Servermethoden implementieren 94
7.4.3 Schritt 3: Erstellen der Delegaten 95
7.5 Performance-Vergleich RMI/IIOP <> RMI/JRMP 97
7.6 CORBA 98
7.6.1 Grundlagen 98
7.6.2 CORBA-IDL: Eine Sprache zur Definition von Interfaces 99
7.7 CORBA über RMI 106
7.7.1 Schritt 1: IDL in Java übersetzen 106
7.7.2 Schritt 2: Client schreiben 107
7.8 Ein RMI/IIOP-Server & ein .NET-Client 108
7.8.1 Übersetzung der IDL-Dateien 109
7.8.2 Der .NET-Client 109

8 Enterprise Java Beans: Überblick 111
8.1 Grundlagen 111
8.1.1 Was sind EJBs? 111
8.1.2 Welche Aufgaben übernimmt der Applicationserver? 113
8.2 Die einzelnen EJB-Typen im Überblick 115
8.2.1 Session Beans 115
8.2.2 Entity Beans 115
8.2.3 Message Driven Beans 117
8.3 Timer 119
8.4 Interfaces und Klassen 119
8.5 Deployment 122
8.5.1 Deployment-Verzeichnis des JBoss 122
8.5.2 Deployment-Deskriptoren 122
8.6 Client-Zugriff auf die EJBs 126
8.7 Lebenszyklen von EJBs 127
8.7.1 Session Beans 127
8.7.2 Entity Beans 128
8.7.3 Message Driven Beans 129
8.8 Namenskonventionen 130
8.9 Verpacken und Deployen des EJB-Archivs 130
8.9.1 Generierung der Deployment-Deskriptoren und Java-Dateien 130
8.9.2 Verpacken und Deployen des Archivs 132

9 Session Beans 135
9.1 Allgemeines 135
9.2 Vorüberlegung: MasterSessionBean 136
9.2.1 Remote-Interface 136
9.2.2 Local-Interface 137
9.2.3 EJB-Klasse 137
9.3 Erstellung einer Stateless Session Bean 140
9.3.1 Home-Interface 140
9.3.2 Remote-Interface 141
9.3.3 EJB-Klasse 141
9.3.4 ejb-jar.xml 144
9.3.5 jboss.xml 144
9.3.6 Ein geeigneter Client 145
9.4 Erstellung einer Stateful Session Bean 146
9.4.1 Home-Interface 147
9.4.2 Remote-Interface 147
9.4.3 EJB-Klasse 148
9.4.4 ejb-jar.xml 150
9.4.5 jboss.xml 150
9.4.6 Ein geeigneter Client 150
9.5 Erstellung einer lokalen Session Bean 151
9.5.1 LocalHome-Interface 152
9.5.2 Local-Interface 152
9.5.3 EJB-Klasse 153
9.5.4 ejb-jar.xml 153
9.5.5 jboss.xml 154
9.5.6 Ein geeigneter Client 154
9.6 Vorüberlegung: EJBEnv 154
9.7 Nutzung einer lokalen Session Bean 157
9.7.1 Home-Interface 157
9.7.2 Remote-Interface 157
9.7.3 EJB-Klasse 158
9.7.4 ejb-jar.xml 160
9.7.5 jboss.xml 160
9.8 Verwendung des IIOP-Protokolls 161
9.8.1 Generierung von Stub- und Tie-Klassen 161
9.8.2 Abänderung des Deployment-Deskriptors jboss.xml 162
9.8.3 Ein IIOP-Client 163
9.9 Konfigurationen 164
9.9.1 Standard-Konfigurationen 164
9.9.2 Individuelle Session Bean-Konfigurationen 166
9.9.3 Konfiguration mittels XDoclet 168

10 CMP Entity Beans 171
10.1 Vorbereitung 173
10.1.1 Vorstellung des Datenbankschemas 173
10.1.2 Zentrale Registrierung der Datenbank in JBoss 174
10.1.3 CMPs: Lokal oder Remote? 176
10.2 Vorüberlegung: CMPMasterBean 177
10.2.1 EJB-Klasse 178
10.2.2 Local-Interface 180
10.2.3 LocalHome-Interface 180
10.3 CMP: Kunde 181
10.3.1 EJB-Klasse 181
10.3.2 Local-Interface 185
10.3.3 LocalHome-Interface 185
10.3.4 ejb-jar.xml 186
10.3.5 jboss.xml 187
10.3.6 jbosscmp-jdbc.xml 188
10.3.7 Nutzung seitens eines lokalen Clients 189
10.4 CMP: Konto 191
10.4.1 Local-Interface 191
10.4.2 EJB-Klasse 191
10.5 Spezifikation der Datenbankanbindung 193
10.5.1 Standard-Datenbank 194
10.5.2 Individuelle Datenbank 196
10.6 Das „Value Object“-Pattern 198
10.6.1 Motivation 198
10.6.2 Kennzeichnung der Klasse 199
10.6.3 Kennzeichnung der Getter 199
10.6.4 Spezifikation des Clientzugriffs 200
10.6.5 Der Ant-Task 201
10.6.6 Die VO-Klasse 201
10.7 1:1 Relation: Kunde – Konto 202
10.7.1 Local-Interface: Kunde 202
10.7.2 Local-Interface: Konto 203
10.7.3 EJB-Klasse: Kunde 203
10.7.4 EJB-Klasse: Konto 206
10.7.5 ejb-jar.xml 207
10.7.6 jbosscmp-jdbc.xml 209
10.8 Die CMPs: Quote, Kategorie und Wette 210
10.8.1 Quote 210
10.8.2 Kategorie 211
10.8.3 Wette 212
10.9 1:N-Relationen: Quote-Wette-Kategorie 213
10.9.1 Local-Interfaces 213
10.9.2 EJB-Klassen 214
10.9.3 ejb-jar.xml 218
10.9.4 jbosscmp-jdbc.xml 220
10.10 CMP: Tipp 221
10.10.1 Primärschlüsselklasse 221
10.10.2 LocalHome-Interface 222
10.10.3 Local-Interface 222
10.10.4 EJB-Klasse 223
10.10.5 ejb-jar.xml 225
10.11 M:N-Relation: Konto-Tipp-Wette 226
10.11.1 Local-Interfaces 226
10.11.2 EJB-Klassen 227
10.11.3 ejb-jar.xml 231
10.11.4 jbosscmp-jdbc.xml 233
10.12 Die EJB-QL 234
10.12.1 Finder 235
10.12.2 Selektoren 240
10.13 Suchfunktionen mit EJB-QL 242
10.13.1 Beispiel 1: Login-Mechanismus 243
10.13.2 Beispiel 2: Alle Datensätze 245
10.13.3 Beispiel 3: Die wertgrößte Kundennummer 247
10.14 Suchfunktionen mit SQL 248
10.14.1 LocalHome-Interface 249
10.14.2 EJB-Klasse 249
10.14.3 ejb-jar.xml 250
10.14.4 jbosscmp-jdbc.xml 251
10.15 Optimierung des Datenbankzugriffs 251
10.15.1 Standardzugriff von JBoss 252
10.15.2 Load Groups 253
10.15.3 Read-Ahead-Strategien 254
10.15.4 Lazy Load Groups 257
10.15.5 Relationen 258
10.16 Automatische Primärschlüsselerzeugung 260
10.16.1 JBoss-spezifisch 260
10.16.2 Herstellerübergreifend 262
10.17 Konfigurationen 266
10.17.1 Standard-Konfigurationen 266
10.18 Konfiguration mittels XDoclet 269

11 BMP Entity Beans 271
11.1 Grundlagen einer BMP 271
11.2 BMP: Kunde 272
11.2.1 Kapselung der Datenbankzugriffe 272
11.2.2 EJB-Klasse 279
11.2.3 Local-Interface 287
11.2.4 LocalHome-Interface 288
11.2.5 ejb-jar.xml 288
11.2.6 jboss.xml 289
11.3 BMP: Konto 289
11.3.1 Kapselung der Datenbankzugriffe 290
11.3.2 EJB-Klasse 292

12 Timer 297
12.1 TimedObject 297
12.2 Timer 298
12.3 TimerService 298
12.4 Beispiele 300
12.4.1 Zusammenspiel der einzelnen Applikationsbestandteile 300
12.4.2 Session Bean: Auftragsloeschung 300
12.4.3 Singleton: TimerActivator 304
12.4.4 CMP: Auftrag 306

13 Message Driven Beans 311
13.1 Grundlagen 311
13.2 Hilfsklassen 313
13.2.1 MessageDrivenMasterBean 313
13.2.2 QueueConnection 314
13.2.3 QueueConnectorSingleton 315
13.3 Queue-Beispiel: UserdataChange 318
13.3.1 Architektonische Vorgehensweise 318
13.3.2 Interface: UserdataChangeOperations 318
13.3.3 Stub: UserdataChangeStub 320
13.3.4 Delegat: UserdataChangeDelegate 321
13.3.5 EJB-Klasse: UserdataChangeBean 323
13.3.6 Deployment-Deskriptoren 325
13.4 Topic-Beispiel: EMailService 327
13.4.1 Architektonische Vorgehensweise 327
13.4.2 Interface: EMailServiceOperations 328
13.4.3 Stub: EmailServiceStub 328
13.4.4 Delegat: EMailServiceDelegate 330
13.4.5 EJB-Klasse: EmailServiceBean 331
13.4.6 Deployment-Deskriptoren 334
13.4.7 Schwachstellen der Architektur 336

14 JTA 337
14.1 Beispiel-Szenarien 337
14.1.1 Szenario 1 338
14.1.2 Szenario 2 339
14.1.3 Szenario 3 339
14.1.4 Szenario 4 340
14.2 Container Managed Transactions (CMTs) 341
14.2.1 Architektur des Beispiels 342
14.2.2 Beispiel: CMP 343
14.2.3 Beispiel: Stateless Session Bean 346
14.3 Bean Managed Transactions (BMTs) 350
14.3.1 Beispiel 1 350
14.3.2 Beispiel 2 358

15 Gesamtapplikation: EJBs 365
15.1 CustomerService 365
15.1.1 Skelett der Stateful Session Bean „CustomerService“ 366
15.1.2 Use Case: Login 371
15.1.3 Use Case: Nutzerdaten abfragen 372
15.1.4 Use Case: Logindaten ändern 372
15.1.5 Use Case: Wette abschließen 373
15.1.6 Use Case: Wettkonto anzeigen 375
15.1.7 Use Case: Nutzerdaten ändern 376
15.1.8 Deployment-Deskriptoren 378
15.2 AdminService 380
15.2.1 Architektur 381
15.2.2 Session Bean: AdminService 381
15.2.3 MDB: Gewinnermittlung 385
15.3 WebAppClient 389

16 Web Services mit AXIS und JBoss 391
16.1 Was ist AXIS? 391
16.2 Von AXIS nach JBoss 393
16.2.1 WS4EE alias JBossWS 393
16.3 Web Service Enabling einer EJB 395
16.3.1 Schritt 1: Implementation der EJB-Klasse 395
16.3.2 Schritt 2: ServiceEndpoint-Interface spezifizieren 398
16.3.3 Schritt 3: WSDL-Datei erstellen 398
16.3.4 Schritt 4: Deployment-Deskriptoren erstellen 400
16.3.5 Schritt 5: Verpacken & Deployen 404
16.4 Ant-Tasks 406
16.4.1 Classpath anpassen 406
16.4.2 Ant-Tasks bekannt machen 406
16.4.3 ejbdoclet-Task anpassen 407
16.4.4 Java2WSDL ausführen 407
16.4.5 ws4ee-Task anpassen 407
16.5 Generierung eines Web Service Clients 408
16.5.1 .NET Client 408
16.5.2 Java Client 410
16.6 Handler 413
16.6.1 Was sind Handler? 413
16.6.2 Wie funktionieren Handler? 414
16.6.3 LoggingHandler 415
16.6.4 AnalysingHandler 417
16.6.5 SigningHandler 419
16.7 Web Service Enabling eines Servlets 427
16.7.1 Schritt 1: ServiceEndpoint-Interface spezifizieren 427
16.7.2 Schritt 2: Servlet implementieren 427
16.7.3 Schritt 3: Java2WSDL ausführen 428
16.7.4 Schritt 4: Deployment-Deskriptoren erstellen 428

17 Clustering mit JBoss 431
17.1 Überblick 431
17.2 Ausfallbehandlung und Lastverteilung 432
17.2.1 HTTP und EJBs 432
17.2.2 JNDI 434
17.2.3 Proxies und Partitionen 436
17.3 Konfiguration von JBoss 437
17.3.1 Kennzeichnung der EJBs 437
17.3.2 Feintuning 439
17.4 Clustern der einzelnen EJB-Typen 442
17.4.1 Stateless Session Beans 442
17.4.2 Stateful Session Beans 442
17.4.3 Entity Beans 445
17.5 Der Client 445

18 JSPs und Servlets 447
18.1 Grundlagen webbasierter Anwendungen 447
18.1.1 Datenübertragung an die JSPs und Servlets 449
18.1.2 Übertragung mittels GET 450
18.1.3 Übertragung mittels POST 452
18.2 Laufzeitumgebung für JSPs und Servlets: Der Web-Container 455
18.3 Entwicklungsumgebung für JSPs und Servlets 455
18.4 Grundlagen: JSPs 456
18.4.1 Scriplets 456
18.4.2 Ausdrücke 457
18.4.3 Deklarationen 457
18.4.4 Kommentare 458
18.4.5 Schlüsselvariablen 458
18.4.6 HttpServletRequest: Auswertung der vom Browser gesendeten Daten .... 459
18.4.7 HttpServletResponse: Senden der Antwort an den Browser 460
18.4.8 Direktiven 461
18.4.9 Aktionen oder „BuildIn-Taglibs“ 463
18.4.10 Codeseparation durch JavaBeans 464
18.4.11 Tag-Libs 466
18.5 Grundlagen: Servlets 468
18.6 Kombination von JSPs und Servlets 471
18.6.1 Ein Master-Servlet 472
18.6.2 Beispiel 473
18.7 Cookies 475
18.7.1 Cookies setzen 475
18.7.2 Cookies auslesen 475
18.7.3 Status eines Cookies ändern 476
18.8 Deployment-Deskriptoren 477
18.9 Verpacken und Deployen des Web-Archivs 479
18.9.1 Generierung der Deployment-Deskriptoren 480
18.9.2 Verpacken und Deployen des Archivs 480

19 Das Web-Framework „Struts“ 483
19.1 Probleme bei der Realisierung des Web-Tiers mittels JSPs 483
19.2 Das MVC-Pattern 488
19.3 Was ist Struts? 488
19.3.1 Installation 488
19.3.2 Struts-Grundlagen 489
19.3.3 Implementierung des UseCases „Benutzerdaten ändern“ mit Struts 490
19.4 Das ActionForm 503
19.4.1 Map-backed / List-backed ActionForms 504
19.4.2 DynaActionForms 505
19.5 Der Validator 505

20 JavaServer Faces 507
20.1 Was sind JavaServer Faces? 507
20.1.1 Das MVC-Pattern 507
20.1.2 Internationalisierung 508
20.1.3 Events 508
20.2 Download und Installation 508
20.2.1 Mitgelieferte Beispiele 508
20.3 Eine einfache JSF-Applikation 509
20.3.1 Das Modell: Eine einfache JavaBean 509
20.3.2 View: Eine JSP zur Eingabe 511
20.3.3 Datenbindungs-Syntax 513
20.3.4 View: Eine Ausgabe-JSP 513
20.3.5 Aktionen 514
20.3.6 Der Controller: Ein Servlet 515
20.3.7 Einbinden in die Applikation 517
20.3.8 Erstellen einer Startseite 518
20.4 Navigationsregeln 519
20.4.1 Verwendung von Wildcards 520
20.4.2 Standard-Verhalten 521
20.4.3 Prioritäten der Verarbeitung 522
20.5 Internationalisierung 522
20.5.1 Erstellen der Ressourcen 522
20.5.2 Verwendung in JSPs 523
20.5.3 Verwendung in JavaBeans 525
20.6 Initialisieren von Managed Beans 526
20.6.1 String-Properties 526
20.6.2 Zahlen 527
20.6.3 Boolesche Properties 528
20.6.4 Map-Properties 528
20.6.5 Array- oder List-Properties 529
20.6.6 Initialisierung per Web Deployment-Descriptor 529
20.6.7 Initialisierung über Referenzen 530
20.7 Validieren von Daten 531
20.7.1 Standard-Validatoren 531
20.7.2 Pflichtfelder deklarieren 532
20.7.3 Validierungsfehler ausgeben 532
20.7.4 Überschreiben der vorgefertigten Fehlermeldungen 534
20.7.5 Validieren innerhalb der FormBean 536
20.7.6 Implementieren eines eigenen Validators 538
20.8 Arbeiten mit Events 541
20.8.1 ActionEvents 541
20.8.2 ValueChangeEvents 544
20.8.3 Events: Verwenden der JavaBean 544
20.9 Konverter 547
20.9.1 Das Converter-Attribut 548
20.9.2 Das Converter-Tag 548
20.10 Ein umfangreiches Beispiel 551
20.10.1 Die rudimentäre FormBean 551
20.10.2 Die Login-Seite 553
20.10.3 Die Methode processLogin() 554
20.10.4 Die Customer-Service-JSP 556
20.10.5 Ändern der Benutzerdaten 559
20.10.6 Ändern der Login-Informationen 562
20.11 Zusammenfassung 562

21 Java Message Service Grundlagen 565
21.1 Remote Procedure Calls vs. Messaging 565
21.1.1 Remote Procedure Calls (RPC) 565
21.1.2 Messaging 567
21.2 JMS Messaging-Modelle 568
21.2.1 Publish-Subscribe-Modell (one-to-many Messaging) 568
21.2.2 Point-to-Point-Modell (one-to-one) Messaging 569
21.3 Architektur von JMS-Applikationen 569
21.4 Basiskomponenten der JMS API 570
21.4.1 Administrierte Objekte 574
21.4.2 Connections 577
21.4.3 Sessions 578
21.4.4 Message Producer 578
21.4.5 Message Consumer 580
21.4.6 Messages 582

22 JMS Message: Typen und Struktur 585
22.1 Header 586
22.1.1 Automatisch gesetzte Header 586
22.1.2 Manuell gesetzte Header 592
22.2 Properties 597
22.2.1 Applikationsspezifische Properties 597
22.2.2 Durch JMS definierte Properties 598
22.2.3 Provider-spezifische Properties 599
22.2.4 Property-Beispiel 600
22.3 Message Selektoren 601
22.4 MessageTypen 604
22.5 Der ComplexChatClient 610

23 Verlässliche und performante Messaging-Applikationen 617
23.1 Acknowledgement & Persistenz 617
23.1.1 AUTO_ACKNOWLEDGE 623
23.1.2 DUPS_OK_ACKNOWLEDGE 624
23.1.3 CLIENT_ACKNOWLEDGE 625
23.2 Weitere Mechanismen zum Aufbau verlässlicher Messaging-Applikationen 626
23.2.1 Dead Letter Queue 626
23.2.2 ExceptionListener 628
23.3 Transaktionen 630
23.3.1 Lokale Transaktionen 632
23.3.2 Verteilte Transaktionen 633
23.4 Performante und skalierbare Messaging-Applikationen 637
23.4.1 Wahl des Invocation Layers 637
23.4.2 Caching & Loadbalancing 638

24 Die JMS-Applikation 641
24.1 Der WettInfoService (Publish-and-Subscribe-Modell) 641
24.1.1 Interoperabilität/Schnittstelle 643
24.1.2 Architektur 643
24.1.3 Erweiterung des ValueObjects WetteVO 644
24.1.4 Die Hilfsklasse TopicConnectorSingleton 645
24.1.5 Der ObjectMessageDelegate 649
24.1.6 Der MapMessageDelegate 650
24.1.7 Der erweiterte AdminService 652
24.2 Die TippAnnahme (Point-to-Point-Modell) 655
24.2.1 Architektur der TippAnnahme 656
24.2.2 MessageDrivenMasterBean 656
24.2.3 Der TippAnnahmeDelegate 658
24.2.4 Das TippAnnahmeServiceBean 659
24.2.5 Der DeploymentDescriptor 661

25 Die JBossMQ Konfiguration 663
25.1 Initialisierung des JBossMQ 664
25.2 Der DestinationManager 666
25.3 Der SecurityManager 667
25.4 Der StateManager 669
25.5 Die Konfiguration von Destination 672
25.6 Der MessageCache 675
25.7 Der PersistenceManager 676
25.8 Konfiguration des Invocation Layers 678
25.8.1 Der JVM Invocation Layer 678
25.8.2 Der Unified Invocation Layer 2 679
25.8.3 Der HTTP Invocation Layer 681

A EJB 3.0 Preview683
A.1 Annotations 683
A.2 EJB 3.0 684
A.3 Implementation der Geschäftslogik 685
A.3.1 Session Beans 685
A.3.2 Message Driven Beans 690
A.4 Implementation von MBeans 691
A.5 Implementation der Persistenzschicht 694
A.5.1 O/R-Mapping 694
A.5.2 Zugriff auf Entities 698
A.6 Deployment 701

Register 703