Jonathan Wetherbee , Chirag Rathod , Raghu Kodali and Peter Zadrozny Beginning EJB 3 Java EE 7 Edition 10.1007/978-1-4302-4693-0_1 Jonathan Wetherbee 2013
1. Introduction to the EJB Architecture
Abstract
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. 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.
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. 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 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 , 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!
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.
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 moreall 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 EJBs 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 methods simultaneously within the same EJB or entity, for specifying behavior in metadata. In cases where the same piece of metadata is defined both in an annotation and in XML, the XML declaration takes precedence in resolving the conflict. Additional benefits of this approach are explored later, in the EJB 3 Simplified Development Model section of this chapter.