Fast Track to EJB 3.0 Using JBoss Training

We offer private customized training for groups of 3 or more attendees.

Course Description

The Enterprise JavaBeans 3.0 specification is a deep overhaul of the EJB specification that is intended to improve the EJB architecture by reducing its complexity from the developer's point of view. It leverages annotations (introduced in Java 5) and Object-Relational Mapping (ORM) technologies to eliminate the dependence on complex EJB APIs, allow POJO (Plain Old Java Object) based development, and provide an effective technology for creating distributed, transactional components, and for mapping relational data to an object schema. This course provides thorough coverage of the EJB3 technology - presented in a clear and effective manner. It starts with the basic concepts and APIs of EJB and then continues on with complex topics such as message driven beans and transactions. New concepts such as the use of annotations and the use of Dependency Injection to initialize references are covered in depth. The course also includes a solid introduction to developing persistent entities using the Java Persistence API (JPA). The course uses hands-on labs and a well-paced approach to make this complex technology understandable in an accelerated fashion. You will come away with a comprehensive understanding of EJB and the important issues that need to be considered to use it in real world applications. Audience: Java developers who want to use EJB3.
Course Length: 3 Days
Course Tuition: $1290 (US)


One year of Java programming experience (or equivalent) is preferred. Knowledge of relational databases and JDBC is strongly recommended.

Course Outline


What is EJB?
EJB Goals
Types of Enterprise JavaBeans
Java Persistence API
EJB and Java EE (Enterprise Editions)
EJB in Java EE Architecture
SOA with Web Services and EJB

EJB 3.0
EJB 3.0 Overview
EJB 2.X Problems
EJB 3.0 Goals
Session Bean Usage
Persistent Entity Usage
MDB Usage

Session Bean Overview
What are Session Beans?
Stateless Session Beans (SLSB)
Stateful Session Beans (SFSB)
Session Bean can be Distributed
Defining a Session Bean
Stateless Session Bean Definition
Calculator Remote Business Interface
Remote and Local Business Interface
Calculator Bean Local Business Interface
A Brief Note on Annotations
How Annotations Work
Annotation Definition
Using Annotations
What Else is Needed?

Packaging and Deployment
J2EE Packaging
Deployment Descriptor (DD)
Deployment Descriptors in EJB 3
EJB-JAR File Structure
Enterprise Archive (EAR File)
application.xml File
Server Deployment
EJB Container
The EJB Container
Server Deployment
JNDI Overview
How do Remote Clients get EJB Access?
JNDI – Java Naming and Directory Interface
EJB Container Binds a Reference into JNDI
Client Looks up Reference in JNDI
JNDI Tree Structure
The Context Interface
The InitialContext Class
Specifying the InitialContext Properties
Using JNDI
EJB Client
Client View of a Session Bean
Client Invocation of a Session EJB
PortableRemoteObject and Casting
Running a Client

Dependency Injection
Dependency Injection
The JavaTunes Online Music Store
An EJB Referencing Another EJB
Injection of CatalogMaintenance
What is Happening

Deployment Descriptors
More about Deployment Descriptors
The XML Deployment Descriptor

The EJB Environment
Issues with Obtaining Resources
Referencing Resources External to EAR
Reference & Deployment Descriptor Usage
Resolving a JNDI Name
Simple Environment Entries
Declaring Simple Environment Entries
Setter Injection
Resource Manager Connection Factories
More on the Enterprise Bean Environment
The Environment is a Level of Indirection
Looking up Resources in the Environment
Looking up via EJBContext
Looking up via JNDI API
More on the @Stateless Annotation
More on the @EJB Annotation
More on the @Resource Annotation
Deployment Descriptor vs Annotation

Stateless Session Bean Lifecycle & Interceptors
Stateless Session Bean State Diagram
Lifecycle of SSB
Client Call of a Stateless SB Method
Business Method Interceptors
InvocationContext Interface Details
Interceptor Method Details
Interceptor Class
Using Interceptor Classes
Method Level Interceptors
Lifecycle Callback Interceptors
Lifecycle Interceptor in the Bean Class
Lifecycle Interceptor in a Separate Class

Stateful Session Beans
Stateful Session Bean (SFSB) Overview
Coding a Stateful Session Bean
Stateful Session Bean Clients
Stateful Session Bean Removal
Stateful Session Passivation/Activation
When to Use Stateful Session Beans
@PrePassivate and @PostActivate Callbacks
Stateful Session Bean State Diagram

The Timer Service
Bean Requirements
The javax.ejb.Timer Interface
The javax.ejb.TimerService Interface
How the Timer Works
Issues with Using the Timer Service

Overview of Messaging Systems
What is Messaging?
Loose Coupling
When is Messaging Used?
Two Messaging Models
Publish/Subscribe – Illustrated
More on Publish/Subscribe
Point-to-Point – Illustrated
More on Point-to-Point (P2P)
Message Delivery – Push versus Pull
Overview of JMS API
What is Java Message Service?
API Structure
JMS Interfaces
Administered Objects
Administered Objects and JNDI – Illustrated
Client Workflow
Synchronous Queue Consumer Client
Asynchronous Queue Consumer Client
JMS Message Types
Message Header Fields

Message-Driven Beans
J2EE Message Producers and Consumers
Message-Driven Bean (MDB) Overview
Goals of Message-Driven Beans
MDB Consumption of a Message
@MessageDriven Details
Activation Configuration Properties
Specifying a Destination for an MDB
Specifying a Destination Using a DD

Message-Driven Bean Lifecycle
Lifecycle Overview
MDB State Diagram
Interceptor Methods

Transaction Definition
Transaction Overview
Transaction Lifecycle
Transactions Clarify Systems

Transactional System Overview
Transactional System Components
Transactional Object
EJB Transaction Support

Transactions in EJB
EJB Declarative Transaction Management
Transactional Scope
Specifying Transaction Attributes
Beans Have a Say in Transactions
Beans can be Notified of Transaction Status
Transaction Attributes – Some Choices
Explicit/Bean-Managed Transactions
Transaction Isolation Levels
Multi-Process TX and Two Phase Commit

Security in EJB
Security Requirements
J2EE Security
J2EE Security Overview
EJB Security Overview
Programmatic Security
Transport Level Security with SSL

Exception Handling
Exception Hierarchy
Application Exceptions in EJB
Defining Application Exceptions
Container Handling of Application Exception
Bean Throwing of Application Exception
Client Handling of Application Exceptions
System Exceptions Indicate Failure
Container Handling of System Exception
Client Handling of System Exceptions

EJB 3 Best Practices
When to Use EJB
Keep Business Interfaces Coarse Grained
Session Façade Structure
Use Container-Managed Transactions
Transaction Duration
Local and Remote Business Interface
Session Bean Tuning
Clustering Session Beans

JPA Overview
The Issues with Persistence Layers
Object-Relational Mapping (ORM) Issues
Issues with JDBC Alone
Java Persistence API Overview
JPA Benefits
Java Persistence Environments

Mapping a Simple Class
Entity Classes
Entity Class Requirements
The Entity Declaration
The Event Class
The Id Property
Filed Access or Property Access
The EVENTS Table
Generated Id Property
Mapping Properties
Basic Mapping Types
Persisting to the Database

Entity Manager and Persistence Context
The Entity Manager & Persistence Context
The EntityManager
The EntityManager Interface
Persistence Unit
Injecting an EntityManager
Retrieving Persistent Objects
Container-Managed Entity Manager
The Persistence Unit

Inserting and Updating
Transient, Persistent, Detached Instances
Removed Instances
Persisting a New Entity
Synchronization to the Database
Updating a Persistent Instance

Querying and Java Persistence Query Language (JPQL)
Java Persistence Query Language
Executing a Query
Where Clause
Query Parameters
Using Query Parameters
Named Queries

Mapping Relationships
Object Relationships
Mappings Overview
Unidirectional Many-To-One Relationship
The Table Structure – Many-To-One
The Owning Side
Bidirectional One-To-Many Relationship
Mapping the One-To-Many Relationship
Using the Relationship
More on the Inverse Side
Other Types of Relationships
Lazy and Eager Loading
Cascading Operations
Queries Across Relationships

Mapping Inheritance
Entity Inheritance
Details of Entity Inheritance
Joined (Table per Subclass)
Entity Definitions for Joined
Joined: Pros and Cons
Single Table Mapping Strategy
Table per Concrete Class

Optimistic Locking / Detached Instances

More on Querying
Projection Queries
Aggregate Queries
Bulk Update and Delete
Native SQL Queries

Embedded Objects
Using Embedded Objects
Embeddable Class

Java Persistence with Java SE
Using JPA with Java SE
Java SE APIs

Course Directory [training on all levels]

Upcoming Classes
Gain insight and ideas from students with different perspectives and experiences.

Java Uses & Stats

Java is Used For:
Android & IOS Development Software Products Video Games Desktop GUI's
Year Created

Most Commonly Used: 
According to Oracle, three billion devices run on Java.  And, because of its real-world applications, it consistently ranks at the top of the TIOBE Programming Community Index. 

Great Career Choice: 
Some of the fastest-growing salaries in the U.S. in 2018 are for Java developers.  (Glassdoor)  

Android Apps Development:
Developers predominatly use their Java skills in building apps for Google's Android. The Android platform is the number one mobile paltform in the world

It Can Run On Any Platform:
Java can compile on Windows and run the same compiled file on Linux, Windows and Mac.

Great Supporting IDE's:
Over the years, coding in Java has become simpler with the introduction of open source development tools, i.e. Eclipse and NetBeans that use Java capabilities for debugging.  


Uses a Lot of Memory:
Performance can be significantly slower with Java and more memory-consuming than natively compiled languages such as C or C++.

Difficulty in Learning: 
Learning Java can be a bit challenging if you are a beginner.  However, once you get the hang of Object Oriented Programming and a decent grasp of the syntax, you will be well on your way.

Slow Start Up Times:
There is quite a bit of one-time initialization done by JDK classes before compiling as well as loading classes and verification (making sure code doesn't do evil things, all of which takes longer that some other languages such as C. 

Verbose and Complex Code:
Long, over-complicated sentences make code less readable and scannable. Compare to let's say Python, we can see how clear Python code appears: It doesn’t require semicolons; uses “and,” “or,” and “not” as operators instead of Java’s “&&,” “||,” and “!”; and generally has fewer bells and whistles such as parentheses or curly braces.

Commercial License Cost:
Companies have to prepare for the changes that Oracle will institute in 2019 . Today, the current version of Java is free and available for redistribution for general purpose computing. However, If you are a DEVELOPER, Oracle recommends you review the roadmap information for Java SE 8 and beyond and take appropriate action depending on the type of application you develop and your distribution mode.

Java Job Market
Average Salary
Job Count
Top Job Locations

New York City 
San Jose
Washington D.C, 

Complimentary Skills to have along with Java

- If you are an experienced Java developer, learning a complimentary language to Java should come much more naturally.  As an example JetBrains recently created the Kotlin programming language which is officially supported by Google for mobile development.  Kotlin compiles to Java bytecode and runs on the JVM; it's purported to address many of Java's shortcomings...

Interesting Reads Take a class with us and receive a book of your choosing for 50% off MSRP.