Beginning Java EE 6 platform with GlassFish 3 : from novice to … · 2011-01-14 · Foreword xvii...
Transcript of Beginning Java EE 6 platform with GlassFish 3 : from novice to … · 2011-01-14 · Foreword xvii...
Beginning Java EE 6
Platform
with GlassFish 3From Novice to Professional
Second Edition
TECHNISCHEJNFORMATIONSBIBUOTHEK
UNIVERSITATSBIBLIOTHEKHANDOVER
ANTONIO GONCALVES
Apress®TIB/UB Hannover 89
133 229 297
Foreword xvii
About the Author xviii
About the Technical Reviewer. xix
Acknowledgements xx
iiPreface xxi
! Chapter 1: Java EE 6 at a Glance 1
Understanding Java EE 1
A Bit of History 2
Standards 4
Architecture 4
Java EE 6 Specifications 10
What's New in Java EE 6? 12
Lighter 13
Easier to Use 15
Richer 16
More Portable 18
The CD-BookStore Application 18
Setting Up Your Environment 20
JDK 1.6 20
Maven2 21
JUnit 4 27
Derby 10.6 31
GlassFish V3.0.1 34
I CONTENTS
Summary 41
Chapter 2: Java Persistence 43
JPA Specification Overview 44
A Brief History of the Specification 44
What's New in JPA 2.0? 45
Reference Implementation 45
Understanding Entities 46
Object-Relational Mapping 46
Querying Entities 48
Callbacks and Listeners 49
Putting it all Together 50
Writing the Book Entity 51
Writing the Main Class 52
Persistence Unit for the Main Class 53
Compiling with Maven 54
Running the Main Class with Derby 56
Writing the BookTest Class 57
Persistence Unit for the BookTest Class 59
Running the BookTest Class with Embedded Derby 60
Summary 60
Chapter 3: Object-Relational Mapping 61
How to Map an Entity 61
Configuration by Exception 63
Elementary Mapping 64
Tables 65
Primary Keys 68
Attributes 72
Access Type 78
vi
CONTENTS
Collection of Basic Types 81
Map of Basic Types 83
Mapping with XML 84
Embeddables 87
Access Type of an Embeddable Class 89
Relationship Mapping 91
Relationships in Relational Databases 92
Entity Relationships 93
Fetching Relationships 105
Ordering Relationships 107
Inheritance Mapping 110
Inheritance Strategies 110
Type of Classes in the Inheritance Hierarchy 118
Summary 121
Chapter 4: Managing Persistent Objects 123
How to Query an Entity 123
Entity Manager 127
Obtaining an Entity Manager 128
Persistence Context 130
Manipulating Entities 132
Cache API 142
JPQL 145
Select 146
From 148
Where 148
Order By 150
Group By and Having 150
Bulk Delete 150
is CONTENTS
Bulk Update 151
Queries 151
Dynamic Queries 154
Named Queries 155
Native Queries 158
Criteria API (or Object-Oriented Queries) 158
Concurrency 161
Versioning 163
Optimistic Locking 164
Pessimistic Locking 166
Summary 166
Chapter 5: Callbacks and Listeners...... 167
Entity Life Cycle 167
Callbacks 169
Listeners 172
Summary 177
Chapter 6: Enterprise Java Beans 179
Understanding EJBs 179
Types of EJBs 181
Anatomy of an EJB 181
EJB Container 183
Embedded Container 184
Dependency Injection and JNDI 185
Callback Methods and Interceptors 186
Packaging 186
EJB Specification Overview 187
History of the Specification 187
What's New in EJB 3.1 188
viii
S CONTENTS
EJB Lite 189
Reference Implementation 189
Putting It All Together 190
Writing the Book Entity 191
Writing the BookEJB Stateless Session Bean 191
Persistence Unit for the BookEJB 193
Writing the Main Class 194
Compiling and Packaging with Maven 194
Deploying on GlassFish 196
Running the Main Class with the Application Client Container 197
Writing the BookEJBTest Class 197
Summary 199
i Chapter 7: Session Beans and the Tinier Service ....201
Session Beans 201
Stateless Beans 202
Stateful Beans 205
Singletons 207
Session Bean Model 214
Asynchronous Calls 226
Embeddable Usage 228
The Timer Service ...230
Calendar-Based Expression 231
Automatic Timer Creation 233
Programmatic Timer Creation 234
Summary 235
Chapter 8: Callbacks and Interceptors ...237
Session Beans Life Cycle 237
Stateless and Singleton 237
ix
11 CONTENTS
Stateful 239
Callbacks 240
Interceptors 243
Around-lnvoke Interceptors 244
Method Interceptors 247
Life-Cycle Interceptor 249
Chaining and Excluding Interceptors 250
Summary 252
Chapter 9: Transactions and Security -253
Transactions 253
ACID 254
Local Transactions 254
Distributed Transactions and XA 256
Transaction Support in EJB 259
Container-Managed Transactions 259
Bean-Managed Transactions 266
Security 268
Principals and Roles 268
Authentication and Authorization 269
Security Support in EJB 269
Declarative Security 270
Programmatic Security 273
Summary 275
Chapter 10: JavaServer Faces 277
Understanding JSF 278
FacesServlet and faces-config.xml 279
Pages and Components 279
Renderer 280
x
CONTENTS
Converters and Validators 281
Managed Beans and Navigation 281
Ajax Support 282
Web Interface Specifications Overview 282
A Brief History of Web Interfaces 283
JSP 2.2, EL 2.2, and JSTL1.2 283
JSF2.0 283
What's New in JSF 2.0 284
Reference Implementation 284
Putting It All Together 284
Writing the Book Entity 286
Writing the BookEJB 286
Writing the BookController Managed Bean 287
Writing the newBook.xhtml Page 288
Writing the listBooks.xhtml Page 290
Configuration with web.xml 292
Compiling and Packaging with Maven 293
Deploying on GlassFish 294
Running the Example 294
Summary 295
Chapter 11: Pages and Components 297
Web Pages 297
HTML 297
XHTML 299
CSS 301
DOM 303
JavaScript 304
Java Server Pages 306
Directive Elements 307
xi
S CONTENTS
Scripting Elements 308
Action Elements 309
Putting It All Together 310
Expression Language 312
JSP Standard Tag Library 314
Core Actions 314
Formatting Actions; 316
SQL Actions 317
XML Actions 319
Functions 321
Facelets 322
JavaServer Faces 323
Life Cycle 324
Standard HTML Components 326
Resource Management 336
Composite Components 337
Implicit Objects 342
Summary 343
Chapter 12: Processing and Navigation ...345
The MVC Pattern 345
FacesServlet 346
FacesContext 349
Faces Config 350
Managed Beans 351
How to Write a Managed Bean 351
Managed Bean Model 352
Navigation 356
Message Handling 361
xii
il CONTENTS
Conversion and Validation 363
Converters 363
Custom Converters 365
Validators 366
Custom Validators, 367
Ajax 368
General Concepts 368
Support in JSF 370
Putting It All Together 372
Summary 376
Chapter 13: Sending Messages 377
Understanding Messages 377
JMS 378
MDB 378
Messaging Specification Overview 379
A Brief History of Messaging 379
JMS 1.1 379
EJB 3.1 379
Reference Implementation 380
How to Send and Receive a Message 380
Java Messaging Service 382
Point-to-Point 383
Publish-Subscribe 384
JMS API 385
Selectors 397
Reliability Mechanisms 397
Message-Driven Beans 400
How to Write an MDB ..400
II CONTENTS
MDB Model 401
MDB as a Consumer 405
MDB as a Producer 406
Transaction 407
Handling Exceptions 408
Putting It All Together 409
Writing the OrderDTO 409
Writing the OrderSender 409
Writing the OrderMDB 410
Compiling and Packaging with Maven 411
Creating the Administered Objects 413
Deploying the MDB on GlassFish 413
Running the Example 414
Summary 414
Chapter 14: SOAP Web Services 415
Understanding SOAP Web Services 415
XML 416
WSDL 417
SOAP 417
UDDI 417
Transport Protocol 418
SOAP Web Services Specification Overview 418
A Brief History of SOAP Web Services 418
Java EE Specifications 418
Reference Implementation 420
How to Invoke a SOAP Web Service 420
Java Architecture for XML Binding 422
Binding 423
xiv
If CONTENTS
Annotations 4^t>
The Invisible Part of the Iceberg 428
WSDL 428
SOAP 431
Java API for XML-Based Web Services 432
JAX-WS Model 432
Invoking a SOAP Web Service 440
Putting It All Together 442
Writing the CreditCard Class 442
Writing the CardValidator SOAP Web Service 442
Compiling and Packaging with Maven 443
Deploying on GlassFish 444
Writing the Web Service Consumer 446
Generating Consumer's Artifacts and Packaging with Maven 447
Running the Main Class 449
Summary 450
Chapter 15: RESTful Web Services 451
Understanding RESTful Web Services 451
Resources and URIs 451
Representations 452
WADL 453
HTTP 453
RESTful Web Services Specification .458
A Brief History of REST 459
JAX-RS 1.1 459
What's New in JAX-RS 1.1? 459
Reference Implementation 460
The REST Approach 460
CONTENTS
From the Web to Web Services460
A Web-Browsing Experience460
Uniform Interface....461
Addressability461
Connectedness 462
Statelessness 463
Java API for RESTful Web Services 463
The JAX-RS Model 464
How to Write a REST Service -464
URI Definition 465
Extracting Parameters 467
Consuming and Producing Content Types 468
Entity Provider 471
Methods or the Uniform Interface 473
Contextual Information 474
Exception Handling 475
Life Cycle 476
Putting It All Together 477
Writing the Book Entity 477
Writing the BookResource 478
Configuring Jersey 481
Compiling and Packaging with Maven 481
Deploying on GlassFish 482
Running the Example 433
Summary 434