Sie sind hier
E-Book

J2EE und JBoss Grundlagen und Profiwissen

AutorDaniel Reiberg, Torsten Langner
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2006
Seitenanzahl734 Seiten
ISBN9783446408371
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis35,99 EUR

Gemeinsam stark!

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

Die Autoren

Torsten Langner und Daniel Reiberg sind erfahrene Java-Entwickler der ersten Stunde, die ihr Wissen, das sie in zahlreichen Großprojekten gesammelt haben, in Form von Seminaren, Büchern und Artikeln weitergeben. 

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

6 Socketprogrammierung (S. 51-52)

Damit zwei Rechner miteinander kommunizieren können, bedarf es keiner Middleware- Technologien wie zum Beispiel RMI, CORBA oder Web Services. Auch sind keine Komponentenmodelle wie zum Beispiel EJB notwendig. Damit zwei Rechner miteinander kommunizieren können, bedarf es lediglich eines sog. Sockets.

Bei einem Socket handelt es sich um einen Verbindungspunkt in einem TCP/IP-basierten Netzwerk. Vergleicht man einen Socket mit einer Telefonnummer, dann wäre die Vorwahl die eindeutige IP-Adresse des Rechners und die Rufnummer wäre der Port des Rechners. Bei einer Socket-Kommunikation handelt es sich um das klassische Client/Server-Modell. Ein Client sendet Daten an einen Server und empfängt wiederum Daten von diesem. Ein Webserver ist beispielsweise solch ein Server. Der passende Client für den Webserver ist ein Browser. Hierbei wählt der Browser die IP-Adresse und den Port des Webservers an. Standardmäßig „lauscht" ein Webserver auf dem Port 80. Auf Grund dieses Standards entfällt die direkte Eingabe der gesamten Webadresse samt Port in einem Webbrowser. Einen Webserver entwickelt man heutzutage jedoch nicht mehr selbst. Hierzu bietet beispielsweise Apache schon einen perfekten Webserver an: Tomcat. Socket-Programmierung ist vielmehr in denjenigen Unternehmen vorzufinden, die noch mit den von vielen als „Altlasten" 1 bezeichneten Systemen (Großrechner) kämpfen müssen. Diese Maschinen haben jedoch gegenüber den „neuen" PC-basierten Systemen fantastische Performance-Vorteile.

Da die heutigen Systeme in Großunternehmen wie zum Beispiel der Lufthansa derart entwickelt werden, dass die neuen Technologien (Applicationserver mit EJBs) als Schnittstelle für Clients angeboten werden – wobei die neuen Technologien immer noch auf die alten Applikationen zurückgreifen –, wird die Socket-Programmierung auch dann benötigt, wenn ein Applicationserver eingesetzt wird. Mit JCA wird beispielsweise ein J2EE-Komponentenmodell vorgestellt, mit dessen Hilfe u. a. solche Zugänge zu Altsystemen strukturiert entwickelt werden können. Das am Ende dieses Kapitels vorgestellte Nicht-Java-System ist ein einfacher .NET-Client, der mit der Programmiersprache C# geschrieben wurde. Hierbei wurde explizit C# gewählt, da der Code zu ungefähr 85% mit dem des äquivalenten Java-Client identisch ist.

6.1 Grundlagen

Mit der Java 2 Standard Edition Version 1.4 wurde das Paket java.nio.* eingeführt. In diesem Paket befinden sich zahlreiche Neuerungen, mit deren Hilfe die Netzwerkprogrammierung einfacher und sicherer durchzuführen ist. Das „n" steht dabei für „new", wodurch Sun die Abwärtskompatibilität zu früheren Java-Programmen gewährleisten möchte. Zentrale Neuerungen innerhalb des java.nio.* Paketes sind:

- Buffers, als Datencontainer.
- Charsets, die – vergleichbar mit XML – mit Hilfe von Encodern und Decodern aus zu übertragenden Bytes die korrekten Zeichen formen, bspw. ein „ü".
- Channels, als Repräsentanten von Akteuren (z. B. Clients, Server oder Dateien), die I/OOperationen durchführen können.
- Selectors und SelectionKeys, die multiple und nicht-blockende I/O-Operationen durchführen können.

Anzumerken ist, dass die Klassen der java.nio.* Pakete noch auf die Klassen der alten Pakete (zum Beispiel java.io.* oder java.net.*) zurückgreifen. Im Wesentlichen wurden die neuen Klassen einfach um die alten herumgebaut.

Die Klassen der java.nio.* Pakete nutzen jedoch folgende zwei Klassen, die nicht Bestandteil des java.nio.* Pakets sind, die aber ebenfalls mit der Java Version 1.4 eingeführt wurden:

java.net.SocketAddress: Diese Klasse repräsentiert eine Socket-Adresse ohne genauere Details bezüglich des zu verwendenden Protokolls. Diese Klasse ist abstrakt und wird von spezifischen Klassen (in der Version 1.4 und 1.5 ist dies nur InetSocketAddress) implementiert.

java.net.InetSocketAddress: Die spezifische Implementierung einer SocketAddress. Sie besitzt eine IP-Adresse und einen Port. Alternativ können auch ein Hostname und ein Port angegeben werden.

6.1.1 Zeichensatzgebundenes Lesen und Schreiben von Daten

6.1.1.1 Byteweises Schreiben und Lesen von Daten

Damit beliebige Daten byteweise geschrieben und gelesen werden können, bietet Java ab der Version 1.4 das Paket java.nio.charset an. Die in diesem Paket enthaltenen Klassen Charset, CharsetDecoder und CharsetEncoder reichen vollkommen aus, um Daten zeichensatzgebunden zu schreiben bzw. zu lesen.

Die Klasse Charset wurde nach dem Factory-Pattern entworfen und erzeugt über die statische forName-Methode eine neue Instanz von Charset. Möchte man nun Daten mit einem bestimmten Zeichensatz schreiben, so wird ein CharsetEncoder benötigt. Zum Lesen zeichensatzgebundener Daten wird ein CharsetDecoder benötigt. Beide können über das instanzierte Charset erzeugt werden:

Inhaltsverzeichnis
Inhalt6
1 Einführung22
1.1 Motivation22
1.2 Grundlage von J2EE: die 4-Tier- Architektur24
1.2.1 2-Tier-Architekturen24
1.2.2 3-Tier-Architekturen25
1.2.3 4-Tier-Architektur einer webbasierten Anwendung26
1.2.4 Webbasierte Anwendungen mit J2EE28
1.3 Vorgehensweise im Buch29
2 JBoss, Eclipse und XDoclet32
2.1 JBoss32
2.1.1 Download & Installation32
2.1.2 Start des Servers33
2.1.3 Die JMX-Console34
2.1.4 Anhalten des Servers35
2.1.5 Basis-Konfigurationen35
2.2 Eclipse, XDoclet & die JBoss-IDE38
3 JCA42
4 JDBC46
4.1 Datenbanktreiber46
4.1.1 Laden des Treibers über den ClassLoader47
4.1.2 Festlegen des Treibers über Systemparameter48
4.2 Aufbau einer Verbindung48
4.3 Einen SQL-Befehl ausführen50
4.3.1 PreparedStatement: Einen vorbereiteten SQL-Befehl ausführen50
4.3.2 Statement: Einen unvorbereiteten SQL-Befehl ausführen55
4.4 Transaktionen55
4.5 BLOBs auslesen56
4.6 Metadaten auslesen57
4.6.1 Metadaten einer Datenbank auslesen57
4.6.2 Metadaten einer Tabelle auslesen57
4.7 Datenbanken innerhalb eines Containers erfragen58
5 JMX60
5.1 Beispiel 1: TableCopyMBean61
5.1.1 Das Interface61
5.1.2 Die MBean-Klasse62
5.1.3 Der Delegat64
5.1.4 Der Deployment-Deskriptor65
5.2 Beispiel 2: SimpleCacheMBean66
5.2.1 Das Interface66
5.2.2 Die MBean-Klasse67
5.2.3 Der Deployment-Deskriptor68
5.2.4 Ein MBean-Connector69
5.3 Verpacken & Deployen der MBeans70
6 Socketprogrammierung72
6.1 Grundlagen73
6.1.1 Zeichensatzgebundenes Lesen und Schreiben von Daten73
6.1.2 Socket-Verbindungen herstellen75
6.1.3 SocketTools: Eine Ansammlung nützlicher Socket- Routinen78
6.1.4 Eine POST-Anfrage an eine Webseite senden79
6.2 Eine einfache Client/Server- Applikation81
6.2.1 Vorgehensweise81
6.2.2 Der Client82
6.2.3 Der Server83
6.3 Ein Framework für eine Client/Server- Applikation85
6.3.1 Die grundlegende Architektur85
6.3.2 MultiClientServer86
6.3.3 MultiClientNonBlockingServer88
6.3.4 AbstractClientHandler89
6.4 Anwendung des Frameworks am Beispiel90
6.4.1 KursabfrageClient91
6.4.2 KursabfrageHandler92
6.4.3 StartKursabfrageClient & StartKursabfrageServer94
6.5 Der C#/.NET-Client95
7 RMI & CORBA98
7.1 Was ist Middleware? Was ist RMI?98
7.2 RMI mit JRMP101
7.2.1 Schritt 1: Interface definieren102
7.2.2 Schritt 2: Server schreiben103
7.2.3 Schritt 3: Server am Broker anmelden105
7.2.4 Der Client106
7.3 RMI mit IIOP107
7.3.1 Schritt 1: Interface definieren107
7.3.2 Schritt 2: Server schreiben109
7.3.3 Schritt 3: Server am Broker anmelden111
7.3.4 Der Client113
7.4 Implementierung einer RMI/JRMP&IIOPApplikation115
7.4.1 Schritt 1: Interface definieren115
7.4.2 Schritt 2: Servermethoden implementieren115
7.4.3 Schritt 3: Erstellen der Delegaten116
7.5 Performance-Vergleich RMI/IIOP <> RMI/JRMP118
7.6 CORBA119
7.6.1 Grundlagen119
7.6.2 CORBA-IDL: Eine Sprache zur Definition von Interfaces120
7.7 CORBA über RMI127
7.7.1 Schritt 1: IDL in Java übersetzen127
7.7.2 Schritt 2: Client schreiben128
7.8 Ein RMI/IIOP-Server & ein .NET-Client129
7.8.1 Übersetzung der IDL-Dateien130
7.8.2 Der .NET-Client130
8.1 Grundlagen132
8.1.1 Was sind EJBs?132
8.1.2 Welche Aufgaben übernimmt der Applicationserver?134
8.2 Die einzelnen EJB-Typen im Überblick136
8.2.1 Session Beans136
8.2.2 Entity Beans136
8.2.3 Message Driven Beans138
8.3 Timer140
8.4 Interfaces und Klassen140
8.5 Deployment143
8.5.1 Deployment-Verzeichnis des JBoss143
8.5.2 Deployment-Deskriptoren143
8.6 Client-Zugriff auf die EJBs147
8.7 Lebenszyklen von EJBs148
8.7.1 Session Beans148
8.7.2 Entity Beans149
8.7.3 Message Driven Beans150
8.8 Namenskonventionen151
8.9 Verpacken und Deployen des EJB- Archivs151
8.9.1 Generierung der Deployment-Deskriptoren und Java- Dateien151
8.9.2 Verpacken und Deployen des Archivs153
9 Session Beans156
9.1 Allgemeines156
9.2 Vorüberlegung: MasterSessionBean157
9.2.1 Remote-Interface157
9.2.2 Local-Interface158
9.2.3 EJB-Klasse158
9.3 Erstellung einer Stateless Session Bean161
9.3.1 Home-Interface161
9.3.2 Remote-Interface162
9.3.3 EJB-Klasse162
9.3.4 ejb-jar.xml165
9.3.5 jboss.xml165
9.3.6 Ein geeigneter Client166
9.4 Erstellung einer Stateful Session Bean167
9.4.1 Home-Interface168
9.4.2 Remote-Interface168
9.4.3 EJB-Klasse169
9.4.4 ejb-jar.xml171
9.4.5 jboss.xml171
9.4.6 Ein geeigneter Client171
9.5 Erstellung einer lokalen Session Bean172
9.5.1 LocalHome-Interface173
9.5.2 Local-Interface173
9.5.3 EJB-Klasse174
9.5.4 ejb-jar.xml174
9.5.5 jboss.xml175
9.5.6 Ein geeigneter Client175
9.6 Vorüberlegung: EJBEnv175
9.7 Nutzung einer lokalen Session Bean178
9.7.1 Home-Interface178
9.7.2 Remote-Interface178
9.7.3 EJB-Klasse179
9.7.4 ejb-jar.xml181
9.7.5 jboss.xml181
9.8 Verwendung des IIOP-Protokolls182
9.8.1 Generierung von Stub- und Tie-Klassen182
9.8.2 Abänderung des Deployment-Deskriptors183
9.8.3 Ein IIOP-Client184
9.9 Konfigurationen185
9.9.1 Standard-Konfigurationen185
9.9.2 Individuelle Session Bean-Konfigurationen187
9.9.3 Konfiguration mittels XDoclet189
10 CMP Entity Beans192
10.1 Vorbereitung194
10.1.1 Vorstellung des Datenbankschemas194
10.1.2 Zentrale Registrierung der Datenbank in JBoss195
10.1.3 CMPs: Lokal oder Remote?197
10.2 Vorüberlegung: CMPMasterBean198
10.2.1 EJB-Klasse199
10.2.2 Local-Interface201
10.2.3 LocalHome-Interface201
10.3 CMP: Kunde202
10.3.1 EJB-Klasse202
10.3.2 Local-Interface206
10.3.3 LocalHome-Interface206
10.3.4 ejb-jar.xml207
10.3.5 jboss.xml208
10.3.6 jbosscmp-jdbc.xml209
10.3.7 Nutzung seitens eines lokalen Clients210
10.4 CMP: Konto212
10.4.1 Local-Interface212
10.4.2 EJB-Klasse212
10.5 Spezifikation der Datenbankanbindung214
10.5.1 Standard-Datenbank215
10.5.2 Individuelle Datenbank217
10.6 Das219
Value Object“-Pattern219
10.6.1 Motivation219
10.6.2 Kennzeichnung der Klasse220
10.6.3 Kennzeichnung der Getter220
10.6.4 Spezifikation des Clientzugriffs221
10.6.5 Der Ant-Task222
10.6.6 Die VO-Klasse222
10.7 1:1 Relation: Kunde – Konto223
10.7.1 Local-Interface: Kunde223
10.7.2 Local-Interface: Konto224
10.7.3 EJB-Klasse: Kunde224
10.7.4 EJB-Klasse: Konto227
10.7.5 ejb-jar.xml228
10.7.6 jbosscmp-jdbc.xml230
10.8 Die CMPs: Quote, Kategorie und Wette231
10.8.1 Quote231
10.8.2 Kategorie232
10.8.3 Wette233
10.9 1:N-Relationen: Quote-Wette-Kategorie234
10.9.1 Local-Interfaces234
10.9.2 EJB-Klassen235
10.9.3 ejb-jar.xml239
10.9.4 jbosscmp-jdbc.xml241
10.10 CMP: Tipp242
10.10.1 Primärschlüsselklasse242
10.10.2 LocalHome-Interface243
10.10.3 Local-Interface243
10.10.4 EJB-Klasse244
10.10.5 ejb-jar.xml246
10.11 M:N-Relation: Konto-Tipp-Wette247
10.11.1 Local-Interfaces247
10.11.2 EJB-Klassen248
10.11.3 ejb-jar.xml252
10.11.4 jbosscmp-jdbc.xml254
10.12 Die EJB-QL255
10.12.1 Finder256
10.12.2 Selektoren261
10.13 Suchfunktionen mit EJB-QL263
10.13.1 Beispiel 1: Login-Mechanismus264
10.13.2 Beispiel 2: Alle Datensätze266
10.13.3 Beispiel 3: Die wertgrößte Kundennummer268
10.14 Suchfunktionen mit SQL269
10.14.1 LocalHome-Interface270
10.14.2 EJB-Klasse270
10.14.3 ejb-jar.xml271
10.14.4 jbosscmp-jdbc.xml272
10.15 Optimierung des Datenbankzugriffs272
10.15.1 Standardzugriff von JBoss273
10.15.2 Load Groups274
10.15.3 Read-Ahead-Strategien275
10.15.4 Lazy Load Groups278
10.15.5 Relationen279
10.16 Automatische Primärschlüsselerzeugung281
10.16.1 JBoss-spezifisch281
10.16.2 Herstellerübergreifend283
10.17 Konfigurationen287
10.17.1 Standard-Konfigurationen287
10.18 Konfiguration mittels XDoclet290
11.1 Grundlagen einer BMP292
11.2 BMP: Kunde293
11.2.1 Kapselung der Datenbankzugriffe293
11.2.2 EJB-Klasse300
11.2.3 Local-Interface308
11.2.4 LocalHome-Interface309
11.2.5 ejb-jar.xml309
11.2.6 jboss.xml310
11.3 BMP: Konto310
11.3.1 Kapselung der Datenbankzugriffe311
11.3.2 EJB-Klasse313
12 Timer318
12.1 TimedObject318
12.2 Timer319
12.3 TimerService319
12.4 Beispiele321
12.4.1 Zusammenspiel der einzelnen Applikationsbestandteile321
12.4.2 Session Bean: Auftragsloeschung321
12.4.3 Singleton: TimerActivator325
12.4.4 CMP: Auftrag327
13 Message Driven Beans332
13.1 Grundlagen332
13.2 Hilfsklassen334
13.2.1 MessageDrivenMasterBean334
13.2.2 QueueConnection335
13.2.3 QueueConnectorSingleton336
13.3 Queue-Beispiel: UserdataChange339
13.3.1 Architektonische Vorgehensweise339
13.3.2 Interface: UserdataChangeOperations339
13.3.3 Stub: UserdataChangeStub341
13.3.4 Delegat: UserdataChangeDelegate342
13.3.5 EJB-Klasse: UserdataChangeBean344
13.3.6 Deployment-Deskriptoren346
13.4 Topic-Beispiel: EMailService348
13.4.1 Architektonische Vorgehensweise348
13.4.2 Interface: EMailServiceOperations349
13.4.3 Stub: EmailServiceStub349
13.4.4 Delegat: EMailServiceDelegate351
13.4.5 EJB-Klasse: EmailServiceBean352
13.4.6 Deployment-Deskriptoren355
13.4.7 Schwachstellen der Architektur357
14 JTA358
14.1 Beispiel-Szenarien358
14.1.1 Szenario 1359
14.1.2 Szenario 2360
14.1.3 Szenario 3360
14.1.4 Szenario 4361
14.2 Container Managed Transactions (CMTs)362
14.2.1 Architektur des Beispiels363
14.2.2 Beispiel: CMP364
14.2.3 Beispiel: Stateless Session Bean367
14.3 Bean Managed Transactions (BMTs)371
14.3.1 Beispiel 1371
14.3.2 Beispiel 2379
15 Gesamtapplikation: EJBs386
15.1 CustomerService386
15.1.1 Skelett der Stateful Session Bean „CustomerService“387
15.1.2 Use Case: Login392
15.1.3 Use Case: Nutzerdaten abfragen393
15.1.4 Use Case: Logindaten ändern393
15.1.5 Use Case: Wette abschließen394
15.1.6 Use Case: Wettkonto anzeigen396
15.1.7 Use Case: Nutzerdaten ändern397
15.1.8 Deployment-Deskriptoren399
15.2 AdminService401
15.2.1 Architektur402
15.2.2 Session Bean: AdminService402
15.2.3 MDB: Gewinnermittlung406
15.3 WebAppClient410
16 Web Services mit AXIS und JBoss412
16.1 Was ist AXIS?412
16.2 Von AXIS nach JBoss414
16.2.1 WS4EE alias JBossWS414
16.3 Web Service Enabling einer EJB416
16.3.1 Schritt 1: Implementation der EJB-Klasse416
16.3.2 Schritt 2: ServiceEndpoint-Interface spezifizieren419
16.3.3 Schritt 3: WSDL-Datei erstellen419
16.3.4 Schritt 4: Deployment-Deskriptoren erstellen421
16.3.5 Schritt 5: Verpacken & Deployen425
16.4 Ant- Tasks427
16.4.1 Classpath anpassen427
16.4.2 Ant-Tasks bekannt machen427
16.4.3 ejbdoclet-Task anpassen428
16.4.4 Java2WSDL ausführen428
16.4.5 ws4ee-Task anpassen428
16.5 Generierung eines Web Service Clients429
16.5.1 .NET Client429
16.5.2 Java Client431
16.6 Handler434
16.6.1 Was sind Handler?434
16.6.2 Wie funktionieren Handler?435
16.6.3 LoggingHandler436
16.6.4 AnalysingHandler438
16.6.5 SigningHandler440
16.7 Web Service Enabling eines Servlets448
16.7.1 Schritt 1: ServiceEndpoint-Interface spezifizieren448
16.7.2 Schritt 2: Servlet implementieren448
16.7.3 Schritt 3: Java2WSDL ausführen449
16.7.4 Schritt 4: Deployment-Deskriptoren erstellen449
17 Clustering mit JBoss452
17.1 Überblick452
17.2 Ausfallbehandlung und Lastverteilung453
17.2.1 HTTP und EJBs453
17.2.2 JNDI455
17.2.3 Proxies und Partitionen457
17.3 Konfiguration von JBoss458
17.3.1 Kennzeichnung der EJBs458
17.3.2 Feintuning460
17.4 Clustern der einzelnen EJB-Typen463
17.4.1 Stateless Session Beans463
17.4.2 Stateful Session Beans463
17.4.3 Entity Beans466
17.5 Der Client466
18 JSPs und Servlets468
18.1 Grundlagen webbasierter Anwendungen468
18.1.1 Datenübertragung an die JSPs und Servlets470
18.1.2 Übertragung mittels GET471
18.1.3 Übertragung mittels POST473
18.2 Laufzeitumgebung für JSPs und Servlets: Der Web- Container476
18.3 Entwicklungsumgebung für JSPs und Servlets476
18.4 Grundlagen: JSPs477
18.4.1 Scriplets477
18.4.2 Ausdrücke478
18.4.3 Deklarationen478
18.4.4 Kommentare479
18.4.5 Schlüsselvariablen479
18.4.6 HttpServletRequest: Auswertung der vom Browser gesendeten Daten480
18.4.7 HttpServletResponse: Senden der Antwort an den Browser481
18.4.8 Direktiven482
18.4.9 Aktionen oder „BuildIn-Taglibs“484
18.4.10 Codeseparation durch JavaBeans485
18.4.11 Tag-Libs487
18.5 Grundlagen: Servlets489
18.6 Kombination von JSPs und Servlets492
18.6.1 Ein Master-Servlet493
18.6.2 Beispiel494
18.7 Cookies496
18.7.1 Cookies setzen496
18.7.2 Cookies auslesen496
18.7.3 Status eines Cookies ändern497
18.8 Deployment-Deskriptoren498
18.9 Verpacken und Deployen des Web- Archivs500
18.9.1 Generierung der Deployment-Deskriptoren501
18.9.2 Verpacken und Deployen des Archivs501
19 Das Web-Framework „Struts“504
19.1 Probleme bei der Realisierung des Web-Tiers mittels JSPs504
19.2 Das MVC-Pattern509
19.3 Was ist Struts?509
19.3.1 Installation509
19.3.2 Struts-Grundlagen510
19.3.3 Implementierung des UseCases „Benutzerdaten ändern“ mit Struts511
19.4 Das ActionForm524
19.4.1 Map-backed / List-backed ActionForms525
19.4.2 DynaActionForms526
19.5 Der Validator526
20 JavaServer Faces528
20.1 Was sind JavaServer Faces?528
20.1.1 Das MVC-Pattern528
20.1.2 Internationalisierung529
20.1.3 Events529
20.2 Download und Installation529
20.2.1 Mitgelieferte Beispiele529
20.3 Eine einfache JSF- Applikation530
20.3.1 Das Modell: Eine einfache JavaBean530
20.3.2 View: Eine JSP zur Eingabe532
20.3.3 Datenbindungs-Syntax534
20.3.4 View: Eine Ausgabe-JSP534
20.3.5 Aktionen535
20.3.6 Der Controller: Ein Servlet536
20.3.7 Einbinden in die Applikation538
20.3.8 Erstellen einer Startseite539
20.4 Navigationsregeln540
20.4.1 Verwendung von Wildcards541
20.4.2 Standard-Verhalten542
20.4.3 Prioritäten der Verarbeitung543
20.5 Internationalisierung543
20.5.1 Erstellen der Ressourcen543
20.5.2 Verwendung in JSPs544
20.5.3 Verwendung in JavaBeans546
20.6 Initialisieren von Managed Beans547
20.6.1 String-Properties547
20.6.2 Zahlen548
20.6.3 Boolesche Properties549
20.6.4 Map-Properties549
20.6.5 Array- oder List-Properties550
20.6.6 Initialisierung per Web Deployment-Descriptor550
20.6.7 Initialisierung über Referenzen551
20.7 Validieren von Daten552
20.7.1 Standard-Validatoren552
20.7.2 Pflichtfelder deklarieren553
20.7.3 Validierungsfehler ausgeben553
20.7.4 Überschreiben der vorgefertigten Fehlermeldungen555
20.7.5 Validieren innerhalb der FormBean557
20.7.6 Implementieren eines eigenen Validators559
20.8 Arbeiten mit Events562
20.8.1 ActionEvents562
20.8.2 ValueChangeEvents565
20.8.3 Events: Verwenden der JavaBean565
20.9 Konverter568
20.9.1 Das Converter- Attribut569
20.9.2 Das Converter-Tag569
20.10 Ein umfangreiches Beispiel572
20.10.1 Die rudimentäre FormBean572
20.10.2 Die Login-Seite574
20.10.3 Die Methode processLogin()575
20.10.4 Die Customer-Service-JSP577
20.10.5 Ändern der Benutzerdaten580
20.10.6 Ändern der Login-Informationen583
20.11 Zusammenfassung583
21 Java Message Service Grundlagen586
21.1 Remote Procedure Calls vs. Messaging586
21.1.1 Remote Procedure Calls (RPC)586
21.1.2 Messaging588
21.2 JMS Messaging-Modelle589
21.2.1 Publish-Subscribe-Modell (one-to-many Messaging)589
21.2.2 Point-to-Point-Modell (one-to-one) Messaging590
21.3 Architektur von JMS- Applikationen590
21.4 Basiskomponenten der JMS API591
21.4.1 Administrierte Objekte595
21.4.2 Connections598
21.4.3 Sessions599
21.4.4 Message Producer599
21.4.5 Message Consumer601
21.4.6 Messages603
22 JMS Message: Typen und Struktur606
22.1 Header607
22.1.1 Automatisch gesetzte Header607
22.1.2 Manuell gesetzte Header613
22.2 Properties618
22.2.1 Applikationsspezifische Properties618
22.2.2 Durch JMS definierte Properties619
22.2.3 Provider-spezifische Properties620
22.2.4 Property-Beispiel621
22.3 Message Selektoren622
22.4 MessageTypen625
22.5 Der ComplexChatClient631
23 Verlässliche und performante Messaging- Applikationen638
23.1 Acknowledgement & Persistenz638
23.1.1 AUTO_ ACKNOWLEDGE644
23.1.2 DUPS_OK_ ACKNOWLEDGE645
23.1.3 CLIENT_ ACKNOWLEDGE646
23.2 Weitere Mechanismen zum Aufbau verlässlicher Messaging- Applikationen647
23.2.1 Dead Letter Queue647
23.2.2 ExceptionListener649
23.3 Transaktionen651
23.3.1 Lokale Transaktionen653
23.3.2 Verteilte Transaktionen654
23.4 Performante und skalierbare Messaging- Applikationen658
23.4.1 Wahl des Invocation Layers658
23.4.2 Caching & Loadbalancing659
24 Die JMS- Applikation662
24.1 Der WettInfoService (Publish-and-Subscribe- Modell)662
24.1.1 Interoperabilität/Schnittstelle664
24.1.2 Architektur664
24.1.3 Erweiterung des ValueObjects WetteVO665
24.1.4 Die Hilfsklasse TopicConnectorSingleton666
24.1.5 Der ObjectMessageDelegate670
24.1.6 Der MapMessageDelegate671
24.1.7 Der erweiterte AdminService673
24.2 Die TippAnnahme (Point-to-Point-Modell)676
24.2.1 Architektur der TippAnnahme677
24.2.2 MessageDrivenMasterBean677
24.2.3 Der TippAnnahmeDelegate679
24.2.4 Das TippAnnahmeServiceBean680
24.2.5 Der DeploymentDescriptor682
25 Die JBossMQ Konfiguration684
25.1 Initialisierung des JBossMQ685
25.2 Der DestinationManager687
25.3 Der SecurityManager688
25.4 Der StateManager690
25.5 Die Konfiguration von Destination693
25.6 Der MessageCache696
25.7 Der PersistenceManager697
25.8 Konfiguration des Invocation Layers699
25.8.1 Der JVM Invocation Layer699
25.8.2 Der Unified Invocation Layer 2700
25.8.3 Der HTTP Invocation Layer702
Anhang704
A. 1 Annotations704
A. 2 EJB 3.0705
A. 3 Implementation der Geschäftslogik706
A. 3.1 Session Beans706
A. 3.2 Message Driven Beans711
A. 4 Implementation von MBeans712
A. 5 Implementation der Persistenzschicht715
A. 5.1 O/R-Mapping715
A. 5.2 Zugriff auf Entities719
A. 6 Deployment722
Register724

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

Prozessübergreifendes Projektmanagement

E-Book Prozessübergreifendes Projektmanagement
Grundlagen erfolgreicher Projekte Format: PDF

Projektmanagement ist in Zeiten von enger werdenden Projektbudgets und Projektzeitplänen eine zunehmende Herausforderung geworden. Die Autoren geben wertvolle Hilfestellungen in Krisensituationen und…

Fundiert entscheiden

E-Book Fundiert entscheiden
Ein kleines Handbuch für alle Lebenslagen Format: PDF

Orientierungshilfe in postfaktischen Zeiten Dieses Buch ist ein Rettungsanker in der Flut der Informationen, die ununterbrochen auf uns einströmen. Tag für Tag müssen Sie sich Meinungen bilden, sei…

Informatik

E-Book Informatik
Anwendungsorientierte Einführung in die allgemeine Wirtschaftsinformatik Format: PDF

Das einführende Informatik-Lehrbuch wendet sich nicht nur an Informatik-Studenten, sondern sogar in erster Linie an Studierende und Praktiker solcher Disziplinen, in denen Informatik zur…

Prozessübergreifendes Projektmanagement

E-Book Prozessübergreifendes Projektmanagement
Grundlagen erfolgreicher Projekte Format: PDF

Projektmanagement ist in Zeiten von enger werdenden Projektbudgets und Projektzeitplänen eine zunehmende Herausforderung geworden. Die Autoren geben wertvolle Hilfestellungen in Krisensituationen und…

MDA®

E-Book MDA®
Effektives Software-Engineering mit UML2® und Eclipse? Format: PDF

Dieses Buch liefert sowohl die theoretischen Grundlagen als auch das praktische Handwerkszeug zur Anwendung der Model-Driven-Architecture der OMG. Nach einer Definition und der Einordnung des…

Dynaxity

E-Book Dynaxity
Management von Dynamik und Komplexität im Softwarebau Format: PDF

Das Buch wendet sich an IT-Entwickler, Projektmanager und CIO's. Hauptthema ist die gezielte Entwicklung von Fähigkeiten (Skills) jenseits der klassischen 'IT-Denke'. Fakt ist, dass laut…

Weitere Zeitschriften

AUTOCAD & Inventor Magazin

AUTOCAD & Inventor Magazin

FÜHREND - Das AUTOCAD & Inventor Magazin berichtet seinen Lesern seit 30 Jahren ausführlich über die Lösungsvielfalt der SoftwareLösungen des Herstellers Autodesk. Die Produkte gehören zu ...

Berufsstart Gehalt

Berufsstart Gehalt

»Berufsstart Gehalt« erscheint jährlich zum Sommersemester im Mai mit einer Auflage von 50.000 Exemplaren und ermöglicht Unternehmen sich bei Studenten und Absolventen mit einer ...

Card Forum International

Card Forum International

Card Forum International, Magazine for Card Technologies and Applications, is a leading source for information in the field of card-based payment systems, related technologies, and required reading ...

CAREkonkret

CAREkonkret

Die Wochenzeitung für Entscheider in der Pflege CAREkonkret ist die Wochenzeitung für Entscheider in der Pflege. Ambulant wie stationär. Sie fasst topaktuelle Informationen und Hintergründe ...

elektrobörse handel

elektrobörse handel

elektrobörse handel gibt einen facettenreichen Überblick über den Elektrogerätemarkt: Produktneuheiten und -trends, Branchennachrichten, Interviews, Messeberichte uvm.. In den monatlichen ...