Javid Jamae, Peter Johnson
JBoss im Einsatz
Den JBoss Application Server konfigurieren
Inhalt
6
Vorwort
16
Danksagungen
19
Über dieses Buch
21
Teil 1 Der JBoss-Anwendungsserver
28
1 Wählen Sie JBoss
29
1.1 Einführung in JBoss
30
1.1.1 Was ist JBoss?
30
1.1.2 Die Produkte der JEMS-Linie
32
1.1.3 Warum ist JBoss AS so populär?
33
1.2 JBoss AS installieren
35
1.2.1 Die Installation vorbereiten
36
1.2.2 Von der Binärdistribution installieren
37
1.2.3 Den JEMS-Installer verwenden
38
1.3 Die Struktur der Installationsverzeichnisse
40
1.3.1 Das bin-Verzeichnis
40
1.3.2 Das client-Verzeichnis
41
1.3.3 Das docs-Verzeichnis
42
1.3.4 Das lib-Verzeichnis
42
1.3.5 Das server-Verzeichnis
42
1.3.6 Serverkonfigurationen verstehen
43
1.3.7 Die Struktur der Konfiguration
45
1.3.8 Die Konfiguration anpassen
47
1.4 Den Server starten und anhalten
48
1.4.1 Den Server starten
48
1.4.2 Eine andere Konfiguration starten
50
1.4.3 Prüfen, ob der Server läuft
50
1.4.4 Den Server anhalten
51
1.5 Anwendungen auf dem Server bereitstellen
51
1.5.1 Die Anwendung erstellen
52
1.5.2 Die Anwendung bereitstellen
54
1.5.3 Eine bereitgestellte Anwendung entfernen
55
1.6 Zusammenfassung
56
1.7 Quellen
57
2 JBoss AS verwalten
58
2.1 Die Architektur von JBoss AS
59
2.1.1 Der Microcontainer
59
2.1.2 JMX
61
2.2 Den Anwendungsserver konfigurieren
63
2.2.1 Logging konfigurieren
64
2.2.2 Verzeichnisspeicherorte konfigurieren
68
2.2.3 Systemeigenschaften definieren
69
2.3 Die Verwaltungstools
71
2.3.1 Die JMX-Konsole
71
2.3.2 Die Twiddle-Utility
73
2.4 Einige interessante MBeans
74
2.4.1 Systemeigenschaften anzeigen
75
2.4.2 JNDI-Namespaces anzeigen
75
2.4.3 Logging-Ebenen ändern
76
2.4.4 Den Threadpool vergrößern
77
2.4.5 Informationen über den Anwendungsserver beschaffen
77
2.5 Zusammenfassung
77
2.6 Quellen
78
3 Anwendungen bereitstellen
79
3.1 Bereitstellung verstehen
80
3.1.1 Eine Anwendung bereitstellen
80
3.1.2 Anwendungen verpacken
81
3.1.3 Anwendungstypen
82
3.1.4 Die Reihenfolge der Bereitstellung
84
3.1.5 Optionen für die Bereitstellungskonfiguration
85
3.2 Wie Klassen geladen werden
88
3.2.1 Multiple Klassenlader
89
3.2.2 Scoping von Klassen
90
3.2.3 Loader-Repositories
91
3.3 Häufige Bereitstellungsfehler beheben
92
3.3.1 Class not found-Exception
92
3.3.2 Doppelte JAR-Dateien
93
3.3.3 Zip File-Fehler
94
3.3.4 Class Cast-Exception
94
3.4 Diverse Anwendungen bereitstellen
95
3.4.1 Datenquellen bereitstellen
95
3.4.2 Ein Hibernate-Archiv bereitstellen
101
3.5 Zusammenfassung
107
3.6 Quellen
107
4 Sicherheit für Anwendungen
108
4.1 Was ist Sicherheit?
109
4.1.1 Anwendungssicherheit verstehen
109
4.1.2 Authentifizierung verstehen
111
4.1.3 Autorisierung verstehen
112
4.1.4 Sicherheit konfigurieren
114
4.1.5 Dynamische Login-Konfiguration
116
4.1.6 Sicherheit auf dem Server protokollieren
117
4.2 Sichere Kommunikation
117
4.2.1 Symmetrische und asymmetrische Verschlüsselung
118
4.2.2 Zertifikate und Quellen-Authentifizierung
120
4.2.3 Zertifikate erstellen und signieren
122
4.2.4 Die cacerts-Datei modifizieren
123
4.2.5 Client-Authentifizierung mit Zertifikaten
124
4.2.6 Eine SSL-fähige Sicherheitsdomäne konfigurieren
126
4.3 Login-Module konfigurieren
128
4.3.1 Das dateibasierte Login-Modul verwenden
129
4.3.2 Das Datenbank-Login-Modul verwenden
131
4.3.3 Das LDAP-Login-Modul verwenden
132
4.3.4 Das identity-Login-Modul
140
4.3.5 Login-Module stapeln
141
4.3.6 Das Clientzertifikat-Login-Modul
142
4.4 Zusammenfassung
143
4.5 Quellen
144
Teil 2 Anwendungsservices
145
5 JBoss Web Server konfigurieren
146
5.1 Webanwendungen verstehen
147
5.1.1 Die Struktur einer Webanwendung
147
5.1.2 Die Konfiguration von Webanwendungen
148
5.2 JBoss Web Server konfigurieren
152
5.2.1 Wichtige Verzeichnisse finden
152
5.2.2 Exploring JBoss Web Server Configuration
153
5.2.3 Die Konfigurationsdatei für den WAR-Deployer
156
5.3 URL-Pfade konfigurieren
157
5.3.1 Virtuelle Hosts aktivieren
159
5.3.2 Kontextpfade konfigurieren
161
5.3.3 Den Stammkontextpfad ändern
163
5.4 Konnektoren konfigurieren
165
5.4.1 Die Konnektorkonfiguration verstehen
166
5.4.2 Nebenläufigkeit konfigurieren
167
5.4.3 Timeouts konfigurieren
168
5.4.4 Hostnamen und Port für einen Proxy konfigurieren
168
5.5 Das Laden von Webklassen konfigurieren
168
5.6 Ventile verwenden
169
5.7 JavaServer Faces konfigurieren
171
5.8 Zusammenfassung
172
5.9 Quellen
173
6 Sicherheit für Webanwendungen
174
6.1 Websicherheit konfigurieren
175
6.1.1 Sicherheit konfigurieren in web.xml
176
6.1.2 Sicherheit konfigurieren in jboss-web.xml
178
6.1.3 Sicherheit konfigurieren in server.xml
178
6.2 Benutzer authentifizieren
179
6.2.1 Web-Authentifizierungsstrategien verstehen
181
6.2.2 Basisauthentifizierung
182
6.2.3 Formularbasierte Authentifizierung
184
6.2.4 Digest-Authentifizierung
185
6.3 Benutzer autorisieren
186
6.3.1 Autorisierung konfigurieren
187
6.3.2 Zugriff für jeden authentifizierten Benutzer erlauben
187
6.4 Webkommunikation verschlüsseln
188
6.4.1 HTTPS einschalten
189
6.4.2 Transportgarantien ermöglichen
190
6.4.3 Gegenseitige Authentifizierung ermöglichen
192
6.4.4 Browserzertifikate erstellen
194
6.5 Clientzertifikat-Authentifizierung ermöglichen
195
6.5.1 Gegenseitige Authentifizierung auf Protokollebene einschalten
196
6.5.2 Die Authentifizierungsmethode einstellen
196
6.5.3 Die JaasSecurityDomain-MBean angeben
196
6.5.4 Die Sicherheitsdomäne angeben
197
6.5.5 Von der Anwendung auf die Sicherheitsdomäne verweisen
197
6.5.6 Eine Strategie, um den Prinzipal aus dem Zertifikat zu bilden
198
6.5.7 Prinzipale und Rollen in den Autorisierungsdatenspeicher laden
199
6.5.8 Das Clientzertifikat zum Truststore des Servers hinzufügen
199
6.5.9 Ein Browserzertifikat erstellen
200
6.6 Die Standardsicherheitsdomäne ändern
200
6.7 Zusammenfassung
201
6.8 Quellen
201
7 Enterprise-Anwendungen konfigurieren
202
7.1 EJBs verstehen
203
7.1.1 Session Beans verstehen
205
7.1.2 Hibernate und JPA verstehen
206
7.1.3 Enterprise-Pakete verstehen
207
7.2 Eine EJB-Anwendung erstellen
209
7.2.1 Die Beispielanwendung programmieren
209
7.2.2 Beispielanwendung verpacken und ausführen
212
7.3 Die EJB-Konfiguration verstehen
214
7.3.1 Was gehört wohin?
214
7.3.2 EJB-Anwendungen konfigurieren
215
7.3.3 Den EJB-Server konfigurieren
218
7.4 Session Beans konfigurieren
220
7.4.1 Die JNDI-Bindung ändern
220
7.4.2 Eine Session Bean nachschlagen
222
7.4.3 EJB-Container konfigurieren
222
7.5 Die Entity-Persistenz konfigurieren
225
7.5.1 Hibernate-Objekte injizieren
225
7.5.2 Hibernate-Zuordnungen bereitstellen
226
7.6 JMX-Service-Objekte erzeugen
227
7.6.1 Ein Service-Objekt erzeugen
227
7.6.2 Die Beispielanwendung ausführen
229
7.6.3 Zugriff auf MBeans ohne Injektion
229
7.7 Das Transportprotokoll konfigurieren
230
7.7.1 Die Transportkonfiguration verstehen
231
7.7.2 Den Transport ändern
233
7.8 Sicherheit für EJBs
234
7.8.1 EJB-Sicherheit durch Anmerkungen
235
7.8.2 EJBs durch Konfiguration absichern
237
7.8.3 Nichtintegrierte Sicherheit
238
7.8.4 EJB-Kommunikation absichern
240
7.9 Zusammenfassung
242
7.10 Quellen
243
8 JBoss-Messaging
244
8.1 Messaging-Systeme verstehen
245
8.1.1 Architekturen von Messaging-Systemen verstehen
245
8.1.2 Die Messaging-Modelle verstehen
246
8.1.3 Die JMS API verstehen
247
8.1.4 Die Architektur von JBoss Messaging verstehen
250
8.2 Eine JMS-Anwendung entwickeln
251
8.2.1 Die Beispielanwendung programmieren
251
8.2.2 Die Beispielanwendung verpacken und ausführen
257
8.3 Nachrichtengesteuerte Beans verwenden
258
8.3.1 Eine MDB anlegen
259
8.3.2 Eine MDB verpacken
262
8.3.3 Eine Deskriptordatei für die MDB
262
8.4 Nachrichtengesteuerte POJOs verwenden
264
8.4.1 Einen nachrichtengesteuerten POJO-Consumerimplementieren
264
8.4.2 Einen nachrichtengesteuerten POJO-Producer implementieren
265
8.4.3 Ein nachrichtengesteuertes POJO verpacken
266
8.5 JBoss Messaging konfigurieren
267
8.5.1 Eine Datenquelle konfigurieren
267
8.5.2 Zugriffssteuerung konfigurieren
269
8.5.3 Destinationen konfigurieren
272
8.5.4 Die Anwendung aktualisieren
273
8.5.5 Das geänderte Beispiel ausführen
274
8.5.6 Die MDB aktualisieren
275
8.5.7 Sicheren Nachrichtentransport konfigurieren
275
8.6 Zusammenfassung
279
8.7 Quellen
279
9 Webservices konfigurieren
280
9.1 Webservices verstehen
281
9.1.1 Die Terminologie der Webservices
282
9.1.2 SOAP-Bindungsstile
283
9.2 Einen Webservice entwickeln
283
9.2.1 Den Webservice programmieren
283
9.2.2 Den Webservice verpacken
284
9.2.3 Die WSDL manuell generieren
286
9.2.4 Webservices mit dem Top-down-Ansatz entwickeln
287
9.2.5 Den Client entwickeln
288
9.2.6 Einen C#-Client programmieren
290
9.2.7 Mehr zu SOAP-Bindungsstilen
291
9.3 Anmerkungen in JBossWS
293
9.3.1 Die WebContext-Anmerkung verstehen
293
9.3.2 Die EndpointConfig-Anmerkung verstehen
295
9.4 Sicherheit für Webservices
296
9.4.1 Zugriff auf Webservices autorisieren
296
9.4.2 Den Sicherheits-Realm definieren
297
9.5 SOAP-Nachrichten verschlüsseln
300
9.5.1 Zertifikate generieren
300
9.5.2 Server sichern mit WS-Security
301
9.5.3 Clients mit WS-Security absichern
304
9.5.4 Nachrichten signieren mit WS-Security
306
9.6 Zusammenfassung
308
9.7 Quellen
308
Teil 3 JBoss Portal
309
10 JBoss Portal und Portlets
310
10.1 Einführung in JBoss Portal
311
10.1.1 JSR-168 verstehen
312
10.1.2 Die Terminologie von Portalen
313
10.1.3 JBoss Portal installieren
314
10.1.4 JBoss Portal administrieren
316
10.2 Ein Portlet erstellen
317
10.2.1 Das Image-Portlet programmieren
318
10.2.2 Die Quelldateien für die JSP programmieren
323
10.2.3 Portlet-Deskriptoren verstehen
327
10.2.4 Portlets erstellen und bereitstellen
330
10.3 Eine Portlet-Instanz
331
10.3.1 Instanzen erzeugen mit der portlet-instance.xml-Datei
332
10.3.2 Instanzen erzeugen mit dem Admin-Portlet
332
10.4 Portlet-Fenster deklarieren
333
10.4.1 Portlet-Fenster in der *-object.xml-Datei deklarieren
333
10.4.2 Portlet-Fenster mit dem Admin-Portlet deklarieren
334
10.5 Zusammenfassung
336
10.6 Quellen
337
11 JBoss Portal konfigurieren
338
11.1 Das Aussehen der Fenster konfigurieren
338
11.1.1 Das Aussehen von Fenstern mit *-object.xml konfigurieren
340
11.2 Der Umgang mit mehreren Bildern und Instanzen
341
11.2.1 Mehrere Instanzen und Fenster mit Deskriptordateienkonfigurieren
342
11.3 Der Umgang mit dem CMS-
344
11.3.1 CMS-Beispieldaten sammeln
344
11.3.2 Die neuen Inhalte anzeigen
346
11.3.3 Zugriff auf CMS-Inhalte
347
11.4 Sicherheit für das Portal
348
11.4.1 Ein neues Konto anlegen
349
11.4.2 Rollen verwalten
349
11.4.3 Zugriffssteuerung verstehen
350
11.5 Ein benutzerdefiniertes Portal entwickeln
358
11.5.1 Die Anforderungen definieren
358
11.5.2 Der Vorschlag
359
11.5.3 Das Portal definieren
359
11.5.4 Das Design anpassen
362
11.5.5 CMS-Inhalte anpassen
365
11.5.6 Das Portal verpacken
366
11.6 Zusammenfassung
368
Teil 4 In die Produktion gehen
370
12 Clustering
371
12.1 Clustering verstehen
372
12.1.1 Lastverteilung
372
12.1.2 Aufbau und Topologie eines Clusters
375
12.1.3 Automatische Discovery und Multicasting
377
12.1.4 Hochverfügbarkeit
379
12.1.5 Replikation und Fehlertoleranz
380
12.1.6 Zustandspassivierung
384
12.1.7 Verteilung versus Clustering
384
12.2 Einen einfachen Cluster einrichten
386
12.2.1 Einen JBoss-Cluster einrichten
386
12.2.2 Eine geclusterte EJB erstellen
389
12.2.3 Die Anwendung bereitstellen
389
12.2.4 Die geclusterte EJB aufrufen
390
12.3 JBoss-Clustering verstehen
391
12.3.1 Die Architektur von JGroups verstehen
392
12.3.2 Die Clustering-Services von JBoss konfigurieren
394
12.3.3 Den Protokollstapel konfigurieren
397
12.4 JBoss Cache konfigurieren
400
12.4.1 Die Konfigurationsdateien von JBoss Cache
401
12.4.2 Was soll in den Cache gelangen?
405
12.5 Zusammenfassung
406
12.6 Quellen
407
13 Clustering für JBoss AS Services
408
13.1 HTTP-Lastverteilung
409
13.1.1 Lastverteilung mit dem nativen Webserver
409
13.1.2 Lastverteilung mit Hardware
411
13.2 HTTP-Sitzungsreplikation
411
13.2.1 Replikation konfigurieren
412
13.2.2 Die Verwendung von Sitzungen verstehen
412
13.2.3 Feldreplikation
414
13.2.4 Passivierung konfigurieren
415
13.3 Clustering von Session Beans
416
13.3.1 Lastverteilung für Session Beans
417
13.3.2 Zustandsbehaftete Session Beans replizieren
418
13.4 Clustering von Entities
419
13.4.1 Den Entity-Cache replizieren
420
13.5 JNDI clustern
423
13.5.1 Den HA-JNDI-Service verstehen
423
13.5.2 HA-JNDI einschalten
425
13.5.3 Auf HA-JNDI zugreifen
426
13.5.4 HA-JNDI verwenden – ja oder nein?
427
13.6 Zusammenfassung
428
13.7 Quellen
429
14 JBoss AS – Tuning
430
14.1 Definition von Performance
431
14.2 Eine Methode für das Performance-Tuning
432
14.2.1 Ganzheitliches Performance-Tuning
432
14.2.2 Testzyklus zur Performance-Analyse
434
14.3 Hardware und Netzwerk tunen
436
14.3.1 Die Geschwindigkeit der Netzwerkkarten einstellen
437
14.3.2 Die Anzahl der CPUs auswählen
438
14.3.3 Die Wahl zwischen 32 Bit und 64 Bit
438
14.4 Das Betriebssystem tunen
439
14.4.1 Prozessoraffinität verstehen
439
14.5 Die JVM tunen
442
14.5.1 Den Java-Heap verstehen
442
14.5.2 Garbage Collection verstehen
445
14.5.3 Garbage Collection-Daten sammeln
447
14.5.4 Die Auswahl der Heap-Einstellungen
454
14.5.5 Der Umgang mit Out-of-Memory-Exceptions
456
14.5.6 Weitere Tuning-Optionen
456
14.6 JBoss AS tunen
457
14.6.1 Datenquellen konfigurieren
458
14.6.2 Den Thread-Pool für HTTP-Anforderungen konfigurieren
460
14.6.3 Das JSP-Servlet tunen
461
14.7 Die Anwendung tunen
462
14.7.1 System.gc vermeiden
463
14.7.2 Einen Thread-Dump aufzeichnen
463
14.8 Zusammenfassung
466
14.9 Quellen
467
15 In die Produktion gehen
468
15.1 Eine Plattform auswählen
469
15.1.1 Eine JVM auswählen
469
15.1.2 Eine JBoss AS-Version aussuchen
470
15.1.3 Eine Plattform auswählen
473
15.2 Mehrere Anwendungsserver-Instanzen nebeneinanderbetreiben
474
15.2.1 Dateikonflikte vermeiden
475
15.2.2 Portkonflikte verhindern
476
15.2.3 Mehrere Knoten herunterfahren
483
15.3 Überflüssige Services entfernen
483
15.4 Sicherheit für die Serveranwendungen
485
15.4.1 Die Serveranwendungen entfernen
485
15.4.2 Sicherheit für die Serveranwendungen
485
15.4.3 Den Zugriff auf den lokalen Computer beschränken
486
15.5 Die Standarddatenbank ändern
487
15.5.1 Den EJB3-Timer-Service konfigurieren
488
15.6 Den Anwendungsserver als Service starten
489
15.6.1 Einen Dienst in Windows registrieren
490
15.6.2 Mehrere Services registrieren
491
15.6.3 Einen Service in Linux registrieren
495
15.7 Die JSP-Kompilierung konfigurieren
497
15.8 Zusammenfassung
498
15.9 Quellen
499
Anhang A JNDI-Namespaces
500
Anhang B Wandel ist unvermeidlich
505
Register
516
© 2009-2024 ciando GmbH