EJB 3 Developer Guide
()
About this ebook
Michael Sikora
Michael Sikora has worked in the IT industry for over 25 years. He spent a decade with Shell developing exploration systems that incorporated emerging graphics and database technologies. Today he is an independent consultant who devotes much of his time to designing and building Oracle-based applications. He is the author of the textbook Oracle Database Principles (Palgrave Macmillan, 1997).
Related to EJB 3 Developer Guide
Related ebooks
EJB 3 Developer Guide: Enterprise JavaBean 3 - a Practical Book and eBook Guide for developers and architects using the EJB Standard. Rating: 0 out of 5 stars0 ratingsEJB 3.0 Database Persistence with Oracle Fusion Middleware 11g: LITE Rating: 0 out of 5 stars0 ratingsJava EE 7 First Look Rating: 0 out of 5 stars0 ratingsEJB 3.0 Database Persistence with Oracle Fusion Middleware 11g Rating: 0 out of 5 stars0 ratingsJava EE 8 and Angular: A practical guide to building modern single-page applications with Angular and Java EE Rating: 0 out of 5 stars0 ratingsSpring Web Flow 2 Web Development Rating: 0 out of 5 stars0 ratingsASP.NET 3.5 Application Architecture and Design Rating: 0 out of 5 stars0 ratingsMastering NetBeans Rating: 0 out of 5 stars0 ratingsFederated Learning with Python: Design and implement a federated learning system and develop applications using existing frameworks Rating: 0 out of 5 stars0 ratingsLearning Website Development with Django Rating: 0 out of 5 stars0 ratingsPerformance Testing with JMeter 2.9 Rating: 0 out of 5 stars0 ratingsBuilding Web Services with Microsoft Azure Rating: 0 out of 5 stars0 ratingsOracle SOA BPEL Process Manager 11gR1 A Hands-on Tutorial Rating: 5 out of 5 stars5/5Oracle APEX Best Practices Rating: 0 out of 5 stars0 ratingsSwing Extreme Testing Rating: 4 out of 5 stars4/5Spring Security Essentials Rating: 0 out of 5 stars0 ratingsBuilding Websites with VB.NET and DotNetNuke 4 Rating: 1 out of 5 stars1/5IBM WebSphere eXtreme Scale 6 Rating: 0 out of 5 stars0 ratingsBuilding SOA-Based Composite Applications Using NetBeans IDE 6 Rating: 0 out of 5 stars0 ratingsMastering Hibernate Rating: 0 out of 5 stars0 ratingsLiferay Portal Performance Best Practices: To maximize the performance of your Liferay Portals you need to acquire best practices. By the end of this tutorial you'll understand making the most appropriate architectural decisions, fine-tuning, load testing, and much more. Rating: 0 out of 5 stars0 ratingsDesigning deep learning systems: Software engineering, #1 Rating: 0 out of 5 stars0 ratingsMVVM Survival Guide for Enterprise Architectures in Silverlight and WPF Rating: 0 out of 5 stars0 ratingsDevOps Bootcamp: The fastest way to learn DevOps Rating: 0 out of 5 stars0 ratingsMastering Spring Boot 3.0: A comprehensive guide to building scalable and efficient backend systems with Java and Spring Rating: 0 out of 5 stars0 ratings
Information Technology For You
Summary of Super-Intelligence From Nick Bostrom Rating: 4 out of 5 stars4/5How to Write Effective Emails at Work Rating: 4 out of 5 stars4/5Data Analytics for Beginners: Introduction to Data Analytics Rating: 4 out of 5 stars4/5ChatGPT: The Future of Intelligent Conversation Rating: 4 out of 5 stars4/5Algorithms to Live By: The Computer Science of Human Decisions Rating: 4 out of 5 stars4/5Requirements Analysis Challenges and Solutions Rating: 0 out of 5 stars0 ratingsCreating Online Courses with ChatGPT | A Step-by-Step Guide with Prompt Templates Rating: 4 out of 5 stars4/5Personal Knowledge Graphs: Connected thinking to boost productivity, creativity and discovery Rating: 0 out of 5 stars0 ratingsSolution Architecture Foundations Rating: 3 out of 5 stars3/5Just Enough R: Learn Data Analysis with R in a Day Rating: 4 out of 5 stars4/5Learn Algorithmic Trading: Build and deploy algorithmic trading systems and strategies using Python and advanced data analysis Rating: 0 out of 5 stars0 ratingsUML 2.0 in Action: A project-based tutorial Rating: 0 out of 5 stars0 ratingsThe BPMN Graphic Handbook Rating: 4 out of 5 stars4/5AWS Certified Cloud Practitioner: Study Guide with Practice Questions and Labs Rating: 5 out of 5 stars5/5Lean vs. Agile vs. Design Thinking Rating: 5 out of 5 stars5/5Who Says Elephants Can't Dance?: Leading a Great Enterprise Through Dramatic Change Rating: 4 out of 5 stars4/5Machine Learning Interview Questions Rating: 5 out of 5 stars5/5The Age of AI: How Artificial Intelligence Will Transform Our World Rating: 0 out of 5 stars0 ratingsA Modern Enterprise Architecture Approach: Enterprise Architecture Rating: 4 out of 5 stars4/5Quantum Computing for Programmers and Investors: with full implementation of algorithms in C Rating: 5 out of 5 stars5/5A Mind at Play: How Claude Shannon Invented the Information Age Rating: 4 out of 5 stars4/5Attention Span: Finding Focus for a Fulfilling Life Rating: 4 out of 5 stars4/5Google Cloud Platform an Architect's Guide Rating: 5 out of 5 stars5/5REST API Design Control and Management Rating: 4 out of 5 stars4/5Inkscape Beginner’s Guide Rating: 5 out of 5 stars5/5
Reviews for EJB 3 Developer Guide
0 ratings0 reviews
Book preview
EJB 3 Developer Guide - Michael Sikora
Table of Contents
EJB 3 Developer Guide
Credits
About the Author
About the Reviewers
Preface
What This Book Covers
What You Need for This Book
Who Is This Book For
Approach of this Book
Conventions
Reader Feedback
Customer Support
Downloading the Example Code for the Book
Errata
Questions
1. Introduction to the EJB 3 Architecture
Introduction to the Java EE Architecture
The EJB 3 Architecture
EJB Container Services
The JPA Persistence Engine
EJB 3 Compared with Earlier Versions
Getting Started
Installing GlassFish
Testing the Installation
Accessing the Administrator Console
Shutting Down GlassFish
Downloading Example Source Code
Summary
2. Session Beans
Introduction
Stateless Session Beans
Annotations
Creating a Session Bean Client
Running the Example
The Program Directory Structure
The Ant Build Script
The Application Client Container
Building the Application
Stateless Session Bean's LifeCycle
Stateful Session Beans
Stateful Session Bean's LifeCycle
Local Interfaces
Summary
3. Entities
Introduction
EJB 3 Entities
Comparison with EJB 2.x Entity Beans
Mapping an Entity to a Database Table
Introducing the EntityManager
Packaging and Deploying Entities
The Program Directory Structure
Building the Application
Field-Based Annotations
Generating Primary Keys
Table Strategy
Sequence Strategy
Identity Strategy
Auto Strategy
Overriding Metadata Defaults
Summary
4. Object/Relational Mapping
O/R Mapping Default Behavior
A Banking Example Application
Customer Entity
Account Entity
Address Entity
Referee Entity
Testing the Application
O/R Mapping Overriding Defaults
Customer Entity
Account Entity
Address Entity
BankServiceBean
O/R Mapping Additional Annotations
Referee Class
BankServiceBean
Composite Primary Keys
O/R Inheritance Mapping
SINGLE_TABLE Strategy
JOINED Strategy
Table per Concrete Class Strategy
Summary
5. The Java Persistence Query Language
Introduction
Simple Queries
Projection
Conditional Expressions
Aggregate Functions
GROUP BY
HAVING
Queries with Relationships
Joins
Inner Joins
Outer Joins
Fetch Joins
Collection Comparison Expressions
Constructor Expressions
SubQueries
Functions
CONCAT
SUBSTRING
TRIM
LOWER and UPPER
LENGTH
LOCATE
ABS
SQRT
MOD
SIZE
Queries with Parameters
Positional Parameters
Named Parameters
Named Queries
Handling Date and Time
@Temporal annotation
Queries with Date Parameters
Datetime Functions
Bulk Update and Delete
Native SQL
Summary
6. Entity Manager
Application-managed Entity Manager
Entity Manager Merge
Entity Manager Methods
remove()
contains()
flush()
setFlushMode()
refresh()
clear()
Cascade Operations
persist
remove
merge
refresh
all
Extended Persistence Context
Entity LifeCycle Callback Methods
Entity Listeners
Summary
7. Transactions
Introduction
Container-Managed Transaction Demarcation
SUPPORTS
NOT_SUPPORTED
REQUIRED
REQUIRES_NEW
MANDATORY
Never
Examples of Transaction Attributes
REQUIRED Example
REQUIRES_NEW Example
NOT_SUPPORTED Example
SUPPORTS Example
MANDATORY Example
NEVER Example
Controlling Container Managed Transactions
SessionSynchronization Interface
Doomed Transactions
Concurrency and Database Locking
Isolation Levels
Lost Update Problem
Versioning
Read and Write Locking
UserTransaction Interface
Summary
8. Messaging
Introduction
Java Message Service (JMS) API
Queue Producer and Consumer Examples
Synchronous Queue Consumer Example
Running the Queue Producer and Synchronous Queue Consumer Examples
An Asynchronous Queue Consumer Example
Running the Asynchronous Queue Consumer Example
Topic Producer and Consumer Examples
Synchronous Topic Consumer Example
Running the Topic Producer and Synchronous Topic Consumer Examples
An Asynchronous Topic Consumer Example
Running the Asynchronous Topic Consumer Example
Motivation for Message-Driven Beans
A Simple Message-Driven Bean Example
A Session Bean Queue Producer
A Message-Driven Bean Queue Consumer
MDB Activation Configuration Properties
acknowledgeMode
subscriptionDurability
messageSelector
MessageDrivenContext
MDB LifeCycle
MDB Example Revisited
Sending Message Confirmation to a Client
MDBs and Transactions
Summary
9. EJB Timer Service
Introduction
Timer Service Examples
A Single Event Example
An Interval Event Example
A Timer Interface Example
Timers and Transactions
Summary
10. Interceptors
Interceptor Methods
Interceptor Classes
Default Interceptors
Interceptor Communication
Summary
11. Implementing EJB 3 Web Services
Overview of Web Service Concepts
The SOAP Protocol
The WSDL Standard
The UDDI Standard
SOA and Web Services
Creating a Java Application Web Service
Creating an Endpoint Implementation Interface
The WSDL Document
The
The
The
The
The GlassFish WSGEN Tool
Deploying a Java Application as a Web Service
The GlassFish Admin Console Test Harness
Creating a Java Web Service Client
Overriding JAX-WS Annotation Defaults
Deploying an EJB Session Bean as a Web Service
Packaging an EJB Web Service
Creating an EJB Web Service Client
Summary
12. EJB 3 Security
Java EE Container Security
Authentication
GlassFish Authentication
Mapping Roles to Groups
Authenticating an EJB Application Client
EJB Authorization
Declarative Authorization
Denying Authorization
EJB Security Propagation
Programmatic Authorization
Java EE Web Container Security
Web-Tier Authorization
Transport Layer Security
Web-Tier Authentication
Example of Web-Tier Authentication and Authorization
Summary
A. Annotations and Their Corresponding Packages
Index
EJB 3 Developer Guide
Michael Sikora
EJB 3 Developer Guide
Copyright © 2008 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, Packt Publishing, nor its dealers or distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: May 2008
Production Reference: 1160508
Published by Packt Publishing Ltd.
32 Lincoln Road
Olton
Birmingham, B27 6PA, UK.
ISBN 978-1-847195-60-9
www.packtpub.com
Cover Image by Michelle O'Kane (<[email protected]>)
Credits
Author
Michael Sikora
Reviewers
Meenakshi Verma
Chris Mawata
Lawrence Bean
Senior Acquisition Editor
Douglas Paterson
Development Editor
Sarah Cullington
Technical Editor
Bhupali Khule
Editorial Team Leader
Mithil Kulkarni
Project Manager
Abhijeet Deobhakta
Project Coordinator
Brinell Catherine Lewis
Indexer
Monica Ajmera
Proofreader
Angie Butcher
Production Coordinator
Shantanu Zagade
Cover Work
Shantanu Zagade
About the Author
Michael Sikora is an enterprise architect with a background in the Unified Process and Java EE. He has a particular interest in object oriented and database technology. He has worked for many large UK clients such as ICL Fujitsu, Mercury Communications, Vodafone, and BUPA. He has used Java since 2000. Before that he spent a decade designing and developing database and data warehouse systems. He has experience in Oracle, PL/SQL, and C. In the 1980s he worked for Shell developing exploration software. He graduated in Mathematics from Essex University and has Masters degrees from London University and Imperial College.
Michael currently resides in London, England and enjoys mountaineering and still hopes to complete the seven summits. His website is http://www.ejbconsultants.com.
I would like to thank Arun Zachariah, Amanda Waite, George Wilk, and Paul Hudson for advice, feedback, and help on this book. From the Packt publishing staff, I would like in particular to thank Douglas Paterson for his interest in this project. I would also like to thank Sarah Cullington, Brinell Lewis, and Bhupali Khule for the smooth running of the publishing process. Finally I would like to thank the technical reviewers for some very helpful suggestions.
About the Reviewers
Meenakshi Verma has been part of the IT industry since 1998. She is experienced in putting up solutions across multiple industry segments using Java/J2EE technologies. She is currently based in Toronto, Canada and is working with Sapient, a leading North American Consultancy organization. Sapient is a global organization which has offices across North America, Europe and India.
Meenakshi has been helping with technical reviews for books published by Packt Publishing across varied enterprise solutions. Her earlier work includes JasperReports for Java Developers, Java EE 5 Development using GlassFish Application Server, Practical Data Analysis and Reporting with BIRT.
I'd like to thank my husband (Atul Verma) for his encouragement and support throughout the review of this book and many others, and my three year old son (Prieyaansh Verma) for giving me the warmth of his love despite my hectic schedules. I also owe thanks & gratitude to my Father (Mr Bhopal Singh) and Mother (Mrs Raj Bala) for laying a strong foundation in me and giving me their unconditional love and support.
Chris Mawata earned his Masters degree at the University of Western Australia and his Ph.D at the University of Hawaii. He was a professor at the University of Tennessee at Chattanooga for fifteen years after which he went into Java consulting and technical training. He currently trains Java developers and writes course materials for Learning Tree International. He is also sponsored by a National Science Foundation grant to be a Java consultant for Phenotype Screening Corporation.
Lawrence Bean fell out of Computer Science and into Music Education in his sophomore year of college. He graduated with a BA in Music Education from the University of Maine in 1986 and had a ten year career as a Choral Music Educator in the Kennebunk, Maine school system, while continuing his technology pursuits as a hobby. His large non-audition groups won silver at the Events America Choral Festival and his select group was featured on Good Morning America and in Yankee Magazine for their annual performances of traditional christmas carols at the highly acclaimed Kennebunkport Christmas Prelude.
He fell back into Computer Science with the offer of a position as Technology Coordinator at SU#47 in greater Bath, Maine and completed his MS in Computer Science in 2006. For the past ten years he has literally built the school system's technology program, from pulling CAT-5 through the walls and constructing PCs out of spare parts to writing data analysis modules and a custom SIF-compliant Student Information System, while continuing his musical pursuits as a hobby.
Throughout he has been highly involved in the Maine Music Educators Association, American Choral Directors Association of Maine, Association of Computer Technology Educators in Maine, and the Barbershop Harmony Society, holding various positions of responsibility and bringing the Maine All-State Auditions into the 21st century with on-line applications, judging, and results processing.
He has been a strong advocate for free, open-source solutions for public schools and currently presents workshops on IPCop Firewalls and the Koha ILS.
Larry lives with his very patient wife Betsy in Saco, Maine, USA.
Preface
Enterprise JavaBeans (EJB) technology is a core part of the Java EE 5 specification. EJB is a framework for building enterprise-scale object-oriented, distributed, component-based business applications. EJB business applications are written in Java, are scalable and can be deployed on any platform that supports the EJB specification.
EJB applications are deployed to and execute under the control of an EJB container. The EJB container provides services typically required by enterprise applications such as security, transaction management, resource pooling, and systems management.
The EJB 3 specification, released in May 2006, is a radical change from previous versions of the technology. Developing business applications is considerably easier with EJB 3. The handling of persistence in particular has radically changed in EJB 3. Persistence is no longer a service provided by an EJB container but rather by a persistence provider conforming to the Java Persistence API (JPA) specification. Java applications which need to be persisted but which do not require the services provided by an EJB container can be persisted outside an EJB container by a JPA persistence provider. In this book we cover JPA as well as the core EJB 3 services.
This book is a concise, example-driven introduction to EJB 3. The best way to learn a new software technology is by studying and trying out programming examples. In this book you will see a lot of code and one example after another. We do not assume any prior knowledge of EJB. However this book does assume at least a couple of years’ experience of Java and some knowledge of relational database technology. The examples in this book have been deployed on the GlassFish application server. GlassFish was chosen primarily because this is the Java EE 5 reference implementation.
What This Book Covers
Chapter 1 Introduction to EJB 3—A general overview of the Java EE architecture including EJB container services, the JPA persistence engine, and initial installation of the GlassFish application server.
Chapter 2 Session Beans—Creation of a session bean and its client and examples of running it from the application client container. Exploring the program directory structure. Packaging and deploying a session bean. A look at the stateless and stateful session beans lifecycle.
Chapter 3 Entities—Exploring EJB 3 entities. How to package and deploy entities and map an entity to a database table. Metadata defaults and how to override them. Generating primary keys.
Chapter 4 Object/Relational Mapping—One-to-one, one-to-many and many-to-many associations. Default object/relational mapping values and how to override them. Object/relational inheritance mapping and additional annotations.
Chapter 5 JPQL (Java Persistence Query Language)—Looking at different groups of queries including aggregate functions, queries with relationships, subqueries, queries with parameters and named queries. JPQL joins and functions are also explained.
Chapter 6 Entity Manager—Looks in detail at the entity manager. Covers both the EJB 3 container-managed and application-managed entity managers.
Chapter 7 Transactions—ACID properties and isolation levels. Container-managed transactions. Bean-managed transactions.
Chapter 8 Messaging—Looks at the JMS (Java Messaging Service) API. Examples of queue producer and queue consumers. Topic producer and consumers. Message driven beans: their activation configuration properties, lifecycles and transactions.
Chapter 9 EJB Timer Service—Examples of single and interval events. Timer interface methods. Timers and transactions.
Chapter 10 Interceptors—Covers interceptor methods, classes and interceptor communication as well as default interceptors.
Chapter 11 Implementing EJB 3 Web Services—An overview of web service concepts and the web service definition language (WSDL). Creating and deploying a Java application as a web service. Creating and deploying an EJB session bean as a web service. Creating a web service client.
Chapter 12 EJB 3 Security—A look at security, GlassFish authentication, declarative and programmatic EJB authorization and Web Tier authentication and authorization.
The Appendix shows EJB 3 annotations described in this book with their corresponding packages.
What You Need for This Book
First you must have version 5 or higher of the Java Development Kit (JDK). This can be downloaded from http://java.sun.com/javase/downloads/index.jsp.
You also need a version of Ant equal to or higher than 1.6.5. Ant is a tool for building Java programs, similar in concept to the Unix Make tool, except that it is platform independent. Ant is part of Apache’s Jakarta project. If you are unfamiliar with Ant you should look at the Ant web site (http://ant.apache.org/). If you do not have Ant there is no need to download it as the GlassFish application server includes a copy of Ant.
Finally you need a version of GlassFish equal to or higher than V2b41d. This can be downloaded from https://glassfish.dev.java.net//.
Instructions on setting up environment variables and installing GlassFish are given in the Getting Started
section in Chapter 1.
Who Is This Book For
Previous experience of working with Java is essential and knowledge of relational databases is desirable.
This book is primarily aimed at professional developers who already have a working knowledge of Java. Enterprise architects and designers with a background in Java would also find this book of use.
As this book is an introduction to EJB 3, it is aimed at those who are new to EJB 3. However, as the new version of EJB is so radically different from the previous version (EJB 2.x), the book would also be suitable and of interest to those who have had experience working with EJB 2.x. The text makes it clear where the differences between the versions of EJB lie, although it is not explored in detail.
Approach of this Book
This book has been written for developers new to EJB 3 who want to use the technology. Such readers usually want to see examples and program code. In this book we work through one example after another and we show lots of program code. If you are new to a technology and have looked at your first HelloWorld example, the next thing you want to do is to code and run the program yourself. In the case of EJBs this also means packaging and deploying the EJB to a container. Although we promise no HelloWorld examples in this book, we look at packaging and deployment straight after coding our first EJB, rather than ignoring these topics or leaving them to the end of the book.
All the source code together with packaging and deployment scripts is available from the book's web site.
This book is not a reference book, so we don't attempt to cover all EJB 3 features. We've kept this book concise to help you quickly get up and running with EJB 3.
Although an EJB will run in any EJB container, the deployment process is container-dependent. This means that we need to pick a specific container for our examples. Sun's open-source, free GlassFish container was chosen primarily because this was the Java EE reference container implementation and also because GlassFish has Toplink embedded. Toplink in turn is the reference JPA persistence engine.
We also chose not to use an IDE (Integrated Development Environment) partly because they are all quite different. A book based on IDE A would be of little use to a reader using IDE B. As IDEs are screen-based navigational tools, any resulting book would contain a large number of screenshots and would be at least double in length. More importantly is the author's view that an IDE is not an ideal learning tool. Apart from having to learn to navigate through a large number of screens, often an IDE will hide the underlying EJB technology. Of course once you have learnt EJB an IDE will make you much more productive in your work.
Instead we use the Ant build tool for compiling, packaging, deploying, and running our EJBs.
Conventions
In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.
Code words in text are shown as follows: We name our interface TimeService.java, which contains a single method definition getTime() .
A block of code will be set as follows:
@Stateless
public class TimeServiceBean implements TimeService {
public String getTime() {
Formatter fmt = new Formatter();
Calendar cal = Calendar.getInstance();
fmt.format(%tr
, cal);
return fmt.toString();
}
}
When we wish to draw your attention to a particular part of a code block, the relevant lines or items will be made bold:
@Stateless
public class TimeServiceBean implements TimeService {
private @EJB NiceDayService niceDay;
public String getTime() {
Formatter fmt = new Formatter();
Calendar cal = Calendar.getInstance();
fmt.format(%tr
, cal);
return fmt.toString() +
niceDay.getMessage();
}
}
Any command-line input and output is written as follows:
C:\EJB3Chapter02\glassfish\lab1\build>jar -tvf TimeService.jar
New terms and important words are introduced in a