Beginning EJB 3_ Java EE 7 Edition (2nd ed.) [Wetherbee, Rathod, Kodali & Zadrozny 2013-05-08].pdf

(13145 KB) Pobierz
For your convenience Apress has placed some of the front
matter material after the index. Please use the Bookmarks
and Contents at a Glance links to access them.
Contents at a Glance
About the Authors�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
xxi
About the Technical Reviewer �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
xxiii
Preface �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
xxv
Acknowledgments �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½
xxvii
Chapter 1: Introduction to the EJB Architecture �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½1
Chapter 2: EJB Session Beans �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½25
Chapter 3: Entities and the Java Persistence API�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½61
Chapter 4: Advanced Persistence Features �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½103
Chapter 5: EJB Message-Driven Beans �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½151
Chapter 6: EJB and Web Services�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½177
Chapter 7: Integrating Session Beans, Entities, Message-Driven Beans,
and Web Services �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½205
Chapter 8: Transaction Support in EJB �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½239
Chapter 9: EJB 3 Performance and Testing �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½281
Chapter 10: Contexts and Dependency Injection �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½305
Chapter 11: EJB Packaging and Deployment �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½329
Chapter 12: EJB Client Applications �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½347
Chapter 13: Testing in an Embeddable EJB Container�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½395
Index �½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½�½415
V413HAV
v
Chapter 1
Introduction to the EJB Architecture
When we set out to write this book, our goal was to present Enterprise JavaBeans (EJB) to developers, with a keen
eye toward how this technology can be used in everyday, real-world applications.
JSR-345: Enterprise JavaBeans
TM
,
Version 3.2 EJB Core Contracts and Requirements
is a deep spec that addresses the needs of beginning developers and
hardcore power users alike. That’s a large audience to satisfy and, as a reference guide, the EJB spec document covers
it well. In writing a book about how to
use
EJB, we had to narrow our audience; nonetheless, we believe that we’ve
written a book that will serve the needs of a majority of Java EE developers.
This book is targeted at developers who are experienced with Java, have built single- or multi-tier applications
using earlier versions of EJB or other technologies, and are ready to take on the challenges (and rewards) of building
enterprise applications using standards-based technology. Recognizing that a combined 1,100 pages of reference
material [covering the EJB and Java Persistence API (JPA) specs] can be daunting, we have provided an on-ramp for
developers, unfolding EJB one section at a time, and giving you the information and code examples you need to roll
up your sleeves and get to work.
As each chapter unfolds, you will not only learn about a new area of the spec, but you will also learn through
specific examples about how to apply it to your own applications. Many of these examples come directly from the
comprehensive, end-to-end, Java EE Enterprise Wines Online application constructed in Chapter 7 and Chapter 12,
so that you can see how they fit into a bigger picture. You are encouraged to take these examples and run with them.
Try them out in your favorite IDE or development environment, and change them around and try new things. EJB and
the related APIs covered in this book—JPA, Web Services, and Contexts and Dependency Injection (CDI)—offer you
a lot with which to work. Once you’re comfortable with the basics of building, deploying, and testing, you’ll find that
EJB components are not only powerful, but also easy to build and use.
Together, the authors of this book have built a number of applications using EJB in concert with other
technologies in the Java EE stack, and we have attempted to capture within it advice about the practical patterns we
have learned, the strategies we have found successful, and some pitfalls you can avoid. Most chapters in this book
are dedicated to exploring specific areas of EJB, but we have also included chapters on Java Persistence API (JPA),
Contexts and Dependency Injection (CDI), Web Services, gauging the performance of your EJB applications, and
deploying to the Java EE application server of your choice. An introductory “Getting Started” section at the end of this
chapter will get you set up to run the many useful sample applications found at the end of each chapter in the book.
We hope this book will serve not only as a reference guide for information on EJB but also as a how-to guide and
repository of practical examples to which you can refer back as you build your own applications. Enjoy!
An Introduction to EJB
In the late 1990s, as Java was bolstered by the emergence of separate technologies (such as RMI, JTA, and CORBA) that
addressed the enterprise needs of large-scale applications, a need arose for a business component framework that
could unify these technologies and incorporate them under a standard component development model. EJB was born
to fill this need. Over the ensuing years, EJB has evolved to encompass numerous features (while judiciously rejecting
others), and it has matured into a robust and standard framework for deploying and executing business components
in a distributed, multiuser environment.
1
Chapter 1
IntroduCtIon to the eJB arChIteCture
What Is EJB?
Each release of EJB is managed through the Java Community Process (JCP) as a Java Specification Request (JSR).
The latest release, which is covered in this book, is defined by
JSR 345: Enterprise JavaBeans
TM
3.2.
EJB JSRs prior to
EJB 3.0 covered Persistent components, but since the introduction of JPA, persistence is now managed through its
own JSRs. Nonetheless, the two areas complement each other well, and we have included several chapters in this
book dedicated largely to JPA.
The EJB 3.2 spec, entitled
JSR 345: Enterprise JavaBeans
TM
, Version 3.2 EJB Core Contracts and Requirements,
together with the class library defined in the EJB 3.2 API, define both a component model and a container framework.
The EJB Component Model
As a component model, EJB defines three object types that developers may build and customize as follows:
Session beans
can be stateless, stateful, or singleton, and they perform business service
operations. These services may be declaratively configured to operate in distributed,
transactional, and access-controlled contexts.
Message-driven beans
(MDBs) are invoked asynchronously in response to external events
through association with a messaging queue or topic.
Complementing this, the Java Persistence API (JPA) principally defines the following persistent object type:
Entities
are objects that have unique identities and represent persistent business data.
Session and message-driven beans are EJBs, and they are often referred to collectively as enterprise
beans.
In earlier versions of EJB, entities were referred to as entity beans, and they also fell into this category. In EJB 3,
however, entities are now managed by a persistence provider and not the EJB container, and they are no longer
considered enterprise beans.
The EJB Container
The EJB container provides the supporting environment in which EJB components operate. This environment offers
transaction and security services, pooling and caching of resources, component life-cycle services, concurrency
support, and more—all of which we will explore throughout this book. EJB components specify the details of how they
wish to interact with their supporting container using EJB-specific metadata that is either captured by the container
and applied to the EJB’s behavior at run time, or interpreted at the time an EJB component is deployed to an EJB
container and used to construct wrapping.
Core Features of the EJB Development Model
Throughout its life, EJB has maintained its focus on delivering components imbued with a handful of core features.
Declarative Metadata
One of the hallmarks of the EJB component model is the ability for developers to specify the behavior of both enterprise
beans and entities
declaratively
(as opposed to
programmatically)
using their choice of Java annotations and/or XML
descriptors. This greatly simplifies the development process, since much customization can be added to a bean without
having to encumber the Java source with service implementation code. To accommodate developer preference and
application flexibility, EJB offers developers their choice of both annotations and XML, with the ability to use both
2
Zgłoś jeśli naruszono regulamin