- 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