1. Introduction to the EJB 3.2 Architecture & CDI Services
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 JavaBeansTM, Version 3.2 EJB Core Contracts and Requirements is a deep spec that addresses the needs of beginning developers and hardcore power users alike. Thats 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 weve 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 that 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 , 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 bookJPA, Web Services, and Contexts and Dependency Injection (CDI) offer you a lot with which to work. Once youre comfortable with the basics of building, deploying, and testing, youll 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!
Whats New in Java Enterprise Edition (Java EE) 8 Architecture?
This first release of the Java enterprise edition (Java EE) platform is dated June 2013, and by the time I was updating this manuscript Java EE 9 was already published.
Java EE 8 includes updates to core APIs such as Servlet 4.0 and Context and Dependency Injection 2.0 as well as two new APIsJava API for JSON Binding (JSR 367) and the Java EE Security API (JSR 375).
Java EE, a superset of the Java SE platform, includes over 30 specifications and a runtime environment, which means that Java EE components can take full advantage of all Java SE APIs.
Here is the list of the most important changes in Java EE 8:
Java EE 8 Platform
JSON-B 1.0
JSON-P 1.1
JAX-RS 2.1
MVC 1.0
Java Servlet 4.0
JSF 2.3
JMS 2.1
CDI 2.0
Java EE Security 1.0
Java EE Management 2.0
Concurrency Utilities
Connector Architecture
WebSocket
JPA
EJB
JTA
JCache
JavaMail
More information about Java EE 8 can be found in the official Java web page: http://www.oracle.com/technetwork/java/javaee/overview/index.html
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.
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:
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. Enhanced message-driven beans contract with a no-methods message listener interface to expose all public methods as message listener methods.