- Understand the EJB 3 architecture and API, and how it fits into the
overall Java EE architecture
- Understand and use the EJB 3 annotations
- Create, deploy & use stateful & stateless session beans
- Use EJB 3 dependency injection to initialize resources
- Understand and use Interceptors (Lifecycle and Business Method)
- Use JNDI (Java Naming and Directory Interface)
- Write EJB clients (remote and local)
- Understand, deploy and use message-driven beans
- Understand distributed transactions, the Java Transaction API, and the
EJB transaction model
- Understand and use the EJB security model
- Understand the new Java Persistence API (JPA)
- Create deploy and use JPA persistent Entities
- Map relational schemas to persistent entities, including the use of
primary keys
- Understand and use the EntityManager
- Understand and use Java Persistence Query Language
- For more advanced classes, optional additional coverage of JPA allows
you to be familiar with more advanced JPA concepts such as entity
relationships (1-1, 1-N, N-N, unidirectional, bidirectional), and
inheritance
- Understand practical architectural issues associated with EJB
applications
Hands-On
50% hands-on, 50% lecture
Java Training Course Duration
3 Days
Java Training Course outline
Session 1:
Introduction
- Overview of EJB and Java Persistence API (JPA)
- Goals of EJB, EJB in the Java EE architecture
- EJB 3.0 Overview
- Session Beans, Persistent Entities, Message Driven Beans
- Lab:
Server setup and introduction
Session 2: Session Beans
- Session Bean Overview
- Services provided, Stateless and Stateful Beans
- Defining a Session Bean - EJB 3 Annotations
- The Bean Implementation, Remote and Local Business
Interface
- Packaging and Deployment
- ejb-jar file, Deployment Descriptors in EJB 3
- EAR file
- The EJB Container
- Lab: Creating a Stateless Session Bean
- JNDI Overview
- Distributed Naming and Lookup
- Context and InitialContext
- Using JNDI
- Writing an EJB 3 Client
- Client View of a Session Bean
- PortableRemoteObject and Casting
- Running the Client
- Lab: Creating an EJB Client
Session 3: Additional Capabilities
- Resources and Dependency Injection
- EJB referencing another EJB
- Referencing Resources, Environment Entries
- Connection Factories (DataSource and others)
- Lab: Using Dependency Injection
- Lab: Creating and Using Environment
Entries
- Session Bean Lifecycle and Interceptors
- Stateless Session Bean Lifecycle
- Business Method Interceptors, InvocationContext, Lifecycle
Callback Interceptors, Interceptor Classes
- Lab: Working with Interceptors
- Stateful Session Beans
- Overview
- Defining, Client Relationship
- Lifecycle, Activation, Passivation
- Lab: Stateful Session Beans
- Timer Service
Session 4: Message-Driven Beans
- Overview of Messaging Systems
- Messaging, Loose Coupling
- Pub/Sub, Point2Point
- Overview of JMS API
- Overview and Structure
- ConnectionFactory and Destination
- JMS Producer and Consumer Client example
- JMS Messages
- Message-Driven Beans (MDB)
- Overview and Goals
- @MessageDriven and MDB example
- Configuring with activationConfig
- State Diagram and Interceptors
- Lab: Message Driven Beans
Session 5: Transactions and
Security
- Overview of Transactions and Transactional Systems
- ACID, Transaction Managers, Resource Managers
- Transactions in EJB 3
- Declarative Transaction Management
- Transaction Attributes and Transactional Scope
- Transaction Scenarios and Bean-Managed Tx
- Lab: Working with Transactions
- Security
- Java EE Security Overview (Role-based)
- @RolesAllowed, @PermitAll
- Programmatic Security
- Lab: Integrating EJB and Java EE Security
Session 6: Exceptions
- Exception Overview
- Checked and Unchecked Exceptions
- Exceptions in EJB 3
- Application Exceptions, System Exceptions
- EJB 3 Best Practices
- When to Use, Coarse-Grained Business Interfaces, Session
Façade, Transaction Guidelines, Clustering
Session 7: Introduction to Java Persistence API
(JPA)
- Overview
- Persistence Layers, Object-Relational Mapping (ORM),
JDBC
- JPA Overview
- Mapping with JPA
- Entities and @Entity, ids and @Id,
- Generated Id Values
- Basic Mapping Types
- Lab: Mapping an Entity Class
- EntityManager
- Persisting to the DB, the EntityManager,
- Persistence Units and Configuration
- Injecting an EntityManager
- Retrieving Persistent Entities
- Lab: Using the EnityManager to persist and
find an Entity
Session 8: Updates and Queries
- Inserting and Updating
- Transient, Persistent, Detached, Removed
- Persisting new Entities, Updating a Persistent Instance
- Lab: Inserting and Updating an Entity
- Querying and JPQL
- Object Based Queries, Select statements, WHERE clause
- Named Queries
- Lab: Creating and Using JPQL Queries
- Versioning and Optimistic Locking
- Detached Instances
- Versioning and Optimistic Locking in EJB
[Optional] Session 9: Overview of Entity Relationships
- Object Relationships Overview
- Mapping Overview (1-1, 1-N, N-1, N-N)
- Unidirectional and Bidirectional
- Owner, Invoice and Join Columns
- Lazy and Eager Loading, and Cascading
- Inheritance Mapping Overview
[Optional] Session 10: Additional JPA Capabilities
- Versioning Overview
- Queries - Projection, Aggregate, Bulk Update/Delete
- Embedded Objects
- EJB 3 and Java SE