Author(s): Javid Jamae, Peter Johnson
Publisher: Manning
Year: 2009
Language: English
Pages: 496
JBoss......Page 1
brief contents......Page 6
contents......Page 8
about the cover illustration......Page 30
preface......Page 18
acknowledgments......Page 21
about this book......Page 23
Roadmap......Page 24
Source code conventions and downloads......Page 26
On versions of JBoss middleware......Page 27
About the authors......Page 28
About the title......Page 29
The JBoss Application Server......Page 32
Vote for JBoss......Page 34
1.1.1 What is JBoss?......Page 35
1.1.2 Exploring the JEMS lineup......Page 37
1.1.3 Why is JBoss AS so popular?......Page 38
1.2 Installing JBoss Application Server......Page 40
1.2.1 Preparing for the installation......Page 41
1.2.3 Using the JEMS Installer......Page 42
1.3.1 The bin directory......Page 44
1.3.2 The client directory......Page 45
1.3.5 The server directory......Page 46
1.3.6 Understanding server configurations......Page 47
1.3.7 Exploring the configuration structure......Page 48
1.3.8 Customizing your configuration......Page 50
1.4.1 Starting the server......Page 51
1.4.2 Starting an alternative configuration......Page 52
1.4.3 Verifying that the server is running......Page 53
1.5 Deploying to the server......Page 54
1.5.1 Creating the application......Page 55
1.5.2 Deploying the application......Page 56
1.5.3 Undeploying the application......Page 57
1.7 References......Page 58
Managing the JBoss Application Server......Page 59
2.1.1 Understanding the microcontainer......Page 60
2.1.2 Understanding JMX......Page 62
2.2 Configuring the application server......Page 64
2.2.1 Configuring logging......Page 65
2.2.2 Configuring directory locations......Page 68
2.2.3 Defining system properties......Page 70
2.3.1 Using the JMX Console......Page 71
2.3.2 Using the twiddle utility......Page 73
2.4 Examining interesting MBeans......Page 74
2.4.2 Viewing the JNDI namespaces......Page 75
2.4.3 Changing the logging levels......Page 76
2.6 References......Page 77
Deploying applications......Page 78
3.1.1 Deploying an application......Page 79
3.1.2 Understanding application packaging......Page 80
3.1.3 Understanding application types......Page 81
3.1.5 Deployment configuration options......Page 83
3.2.1 Understanding multiple class loaders......Page 86
3.2.2 Scoping classes......Page 87
3.2.3 Understanding loader repositories......Page 88
3.3.1 Class not found exception......Page 89
3.3.2 Duplicate JAR files......Page 90
3.3.4 Class cast exception......Page 91
3.4.1 Deploying data sources......Page 92
3.4.2 Deploying a Hibernate archive......Page 98
3.6 References......Page 103
Securing applications......Page 104
4.1 Understanding security......Page 105
4.1.1 Understanding application security......Page 106
4.1.2 Understanding authentication......Page 107
4.1.3 Understanding authorization......Page 108
4.1.4 Configuring security......Page 109
4.1.5 Dynamic login configuration......Page 111
4.1.6 Logging security on the server......Page 112
4.2.1 Understanding symmetric and asymmetric encryption......Page 113
4.2.2 Understanding certificates and source authentication......Page 115
4.2.3 Creating and signing certificates......Page 116
4.2.5 Understanding certificate-based client authentication......Page 118
4.2.6 Configuring an SSL-aware security domain......Page 121
4.3 Configuring login modules......Page 122
4.3.1 Using the file-based login module......Page 123
4.3.2 Using the database login module......Page 125
4.3.3 Using the LDAP login module......Page 126
4.3.5 Stacking login modules......Page 133
4.3.6 Using the client certificate login module......Page 135
4.5 References......Page 136
Application services......Page 138
Configuring JBoss Web Server......Page 140
5.1.1 Understanding the web application structure......Page 141
5.1.2 Understanding web application configuration......Page 142
5.2.1 Locating key directories......Page 146
5.2.2 Exploring JBoss Web Server Configuration......Page 147
5.2.3 Exploring the WAR deployer configuration file......Page 150
5.3 Configuring URL paths......Page 151
5.3.1 Enabling virtual hosts......Page 152
5.3.2 Configuring context paths......Page 154
5.3.3 Changing the root context path......Page 156
5.4 Configuring connectors......Page 157
5.4.1 Understanding connector configuration......Page 159
5.5 Configuring web class loading......Page 160
5.6 Using valves......Page 161
5.7 Configuring JavaServer Faces......Page 163
5.8 Summary......Page 164
5.9 References......Page 165
Securing web applications......Page 166
6.1 Configuring web security......Page 167
6.1.1 Configuring security in web.xml......Page 168
6.1.3 Configuring security in server.xml......Page 170
6.2 Authenticating users......Page 171
6.2.1 Understanding the web authentication strategies......Page 172
6.2.2 Basic authentication......Page 173
6.2.3 Form-based authentication......Page 175
6.2.4 Digest authentication......Page 176
6.3.1 Configuring authorization......Page 177
6.3.2 Allowing access to any authenticated user......Page 178
6.4.1 Enabling HTTPS......Page 179
6.4.2 Enabling transport guarantees......Page 181
6.4.3 Enabling mutual authentication......Page 183
6.4.4 Creating browser certificates......Page 184
6.5 Enabling client-certificate authentication......Page 185
6.5.3 Specifying the JaasSecurityDomain MBean......Page 186
6.5.5 Pointing to the security domain from the application......Page 187
6.5.7 Adding principals and roles to the authorization datastore......Page 188
6.5.9 Creating a browser certificate......Page 189
6.7 Summary......Page 190
6.8 References......Page 191
Configuring enterprise applications......Page 192
7.1 Understanding EJBs......Page 193
7.1.1 Understanding session beans......Page 195
7.1.2 Understanding Hibernate and JPA......Page 196
7.1.3 Understanding enterprise packaging......Page 197
7.2 Creating an EJB application......Page 198
7.2.1 Coding the example application......Page 199
7.2.2 Packaging and running the example application......Page 202
7.3.1 Where does everything go?......Page 203
7.3.2 Configuring EJB applications......Page 204
7.3.3 Configuring the EJB server......Page 207
7.4.1 Changing the JNDI binding......Page 208
7.4.3 Configuring EJB containers......Page 210
7.5.1 Injecting Hibernate objects......Page 213
7.5.2 Deploying Hibernate mappings......Page 214
7.6.1 Creating a service object......Page 215
7.6.2 Running the sample application......Page 217
7.6.3 Accessing MBeans without injection......Page 218
7.7.1 Understanding transport configuration......Page 219
7.7.2 Changing the transport......Page 221
7.8 Securing EJBs......Page 222
7.8.1 Securing EJBs via annotations......Page 223
7.8.2 Securing EJBs via configuration......Page 225
7.8.3 Nonintegrated security......Page 226
7.8.4 Securing EJB communication......Page 228
7.9 Summary......Page 230
7.10 References......Page 231
JBoss Messaging......Page 232
8.1.1 Understanding messaging system architectures......Page 233
8.1.2 Understanding the messaging models......Page 234
8.1.3 Understanding the JMS API......Page 235
8.1.4 Understanding the JBoss Messaging architecture......Page 237
8.2.1 Coding the example application......Page 238
8.2.2 Packaging and running the example application......Page 244
8.3 Using message-driven beans......Page 245
8.3.1 Creating an MDB......Page 246
8.3.2 Packaging an MDB......Page 248
8.3.3 Using a descriptor file with an MDB......Page 249
8.4.1 Implementing a message-driven POJO consumer......Page 250
8.4.2 Implementing a message-driven POJO producer......Page 252
8.5 Configuring JBoss Messaging......Page 253
8.5.1 Configuring a data source......Page 254
8.5.2 Configuring access control......Page 255
8.5.3 Configuring destinations......Page 258
8.5.4 Updating the application......Page 259
8.5.5 Running the modified example......Page 260
8.5.7 Configuring secure message transport......Page 261
8.6 Summary......Page 264
8.7 References......Page 265
Configuring Web Services......Page 266
9.1 Understanding Web Services......Page 267
9.1.2 Understanding SOAP binding styles......Page 268
9.2.1 Coding the web service......Page 269
9.2.2 Packaging the web service......Page 270
9.2.3 Manually generating the WSDL......Page 271
9.2.4 Developing a web service using the top-down strategy......Page 272
9.2.5 Developing the client......Page 273
9.2.6 Developing a C# client......Page 275
9.2.7 Revisiting the SOAP binding styles......Page 276
9.3.1 Understanding the WebContext annotation......Page 277
9.3.2 Understanding the EndpointConfig annotation......Page 279
9.4.1 Authorizing web service access......Page 280
9.4.2 Defining the security realm......Page 281
9.5 Encrypting SOAP messages......Page 283
9.5.1 Generating the certificate......Page 284
9.5.2 Securing the server using WS-Security......Page 285
9.5.3 Securing the client using WS-Security......Page 287
9.5.4 Signing the messages using WS-Security......Page 289
9.7 References......Page 291
JBoss Portal......Page 292
The JBoss Portal and portlets......Page 294
10.1 Introducing the JBoss Portal......Page 295
10.1.2 Understanding portal terminology......Page 296
10.1.3 Installing the JBoss Portal......Page 297
10.1.4 Administering the JBoss Portal......Page 299
10.2.1 Coding the Image portlet......Page 301
10.2.2 Coding the JSP-related source files......Page 306
10.2.3 Understanding the portlet descriptors......Page 310
10.2.4 Building and deploying the portlet......Page 313
10.3.1 Creating an instance using the portlet-instance.xml file......Page 314
10.4.1 Declaring a portlet window using the *-object.xml file......Page 315
10.4.2 Declaring a portlet window using the Admin portlet......Page 316
10.6 References......Page 319
Configuring the JBoss Portal......Page 320
11.1 Configuring window appearance......Page 321
11.1.1 Configuring window appearance using *-object.xml......Page 322
11.2 Working with multiple windows and instances......Page 323
11.2.1 Configuring multiple instances and windows using the descriptor files......Page 324
11.3 Working with the CMS portlet......Page 326
11.3.1 Gathering example CMS data......Page 327
11.3.2 Displaying the new content......Page 328
11.3.3 Accessing CMS content......Page 329
11.4.1 Creating a new account......Page 330
11.4.2 Managing roles......Page 331
11.4.3 Understanding access control......Page 332
11.5.2 Making the proposal......Page 339
11.5.3 Defining the portal......Page 340
11.5.4 Customizing the theme......Page 343
11.5.5 Customizing CMS content......Page 346
11.5.6 Packaging the portal......Page 347
11.6 Summary......Page 349
Going to production......Page 350
Understanding clustering......Page 352
12.1.1 Load balancing......Page 353
12.1.2 Cluster topology and makeup......Page 356
12.1.3 Automatic discovery and multicasting......Page 358
12.1.4 High availability......Page 359
12.1.5 Replication and fault tolerance......Page 360
12.1.6 State passivation......Page 363
12.1.7 Distribution versus clustering......Page 364
12.2.1 Bringing up a JBoss cluster......Page 365
12.2.2 Creating a clustered EJB......Page 367
12.2.4 Calling the clustered EJB......Page 368
12.3 Understanding JBoss clustering......Page 369
12.3.1 Understanding the JGroups architecture......Page 370
12.3.2 Configuring JBoss clustering services......Page 371
12.3.3 Configuring the protocol stack......Page 374
12.4 Configuring JBoss Cache......Page 377
12.4.1 Examining the JBoss Cache configuration files......Page 378
12.4.2 Deciding what to cache......Page 381
12.5 Summary......Page 382
12.6 References......Page 383
Clustering JBoss AS services......Page 384
13.1 HTTP load balancing......Page 385
13.1.1 Load balancing with native web servers......Page 386
13.2.1 Configuring replication......Page 387
13.2.2 Understanding session usage......Page 388
13.2.3 Using field-level replication......Page 390
13.2.4 Configuring passivation......Page 391
13.3 Clustering session beans......Page 392
13.3.1 Load balancing session beans......Page 393
13.3.2 Replicating stateful session beans......Page 394
13.4.1 Replicating the entity cache......Page 395
13.5.1 Understanding the HA-JNDI service......Page 398
13.5.2 Enabling HA-JNDI......Page 400
13.5.3 Accessing HA-JNDI......Page 401
13.5.4 Deciding whether to use HA-JNDI......Page 402
13.6 Summary......Page 403
13.7 References......Page 404
Tuning the JBoss Application Server......Page 405
14.1 Defining performance......Page 406
14.2.1 Holistic performance tuning......Page 407
14.2.2 Performance analysis test cycle......Page 408
14.3 Tuning the hardware and network......Page 410
14.3.1 Setting network card speed......Page 411
14.3.3 Choosing 32-bit or 64-bit......Page 412
14.4.1 Understanding processor affinity......Page 413
14.5 Tuning the JVM......Page 415
14.5.1 Understanding the Java heap......Page 416
14.5.2 Understanding garbage collection......Page 418
14.5.3 Gathering garbage collection data......Page 420
14.5.4 Choosing heap settings......Page 427
14.5.6 Exploring more tuning options......Page 428
14.6.1 Configuring data sources......Page 429
14.6.2 Configuring the HTTP request thread pool......Page 431
14.6.3 Tuning the JSP servlet......Page 432
14.7 Tuning your application......Page 433
14.7.2 Taking a thread dump......Page 434
14.8 Summary......Page 437
14.9 References......Page 438
Going to production......Page 439
15.1.1 Selecting a JVM......Page 440
15.1.2 Selecting a JBoss AS version......Page 441
15.1.3 Selecting a platform......Page 444
15.2.1 Preventing file clashes......Page 445
15.2.2 Preventing port clashes......Page 446
15.3 Removing unwanted services......Page 453
15.4 Securing the server applications......Page 454
15.4.3 Limiting access to the local machine......Page 455
15.5 Changing the default database......Page 456
15.5.1 Configuring the EJB3 timer service......Page 457
15.6 Starting the application server as a service......Page 458
15.6.1 Registering a service in Windows......Page 459
15.6.2 Registering multiple services......Page 460
15.6.3 Registering a service in Linux......Page 463
15.7 Configuring JSP compilation......Page 465
15.8 Summary......Page 466
15.9 Resources......Page 467
A.1 Understanding the enterprise naming context......Page 468
A.2 Examining the JNDI namespaces......Page 470
appendix B: Change is inevitable......Page 473
B.1.1 Installing and configuring Embedded Jopr......Page 474
B.1.2 JBoss Portal 2.7.0......Page 478
B.1.3 The common/lib directory......Page 479
B.1.5 The profile service repository......Page 480
B.1.7 References......Page 482
A......Page 484
C......Page 485
E......Page 486
I......Page 487
J......Page 488
L......Page 489
M......Page 490
P......Page 491
R......Page 492
S......Page 493
V......Page 494
Z......Page 495
back cover......Page 496