EJB 3 in Action


EJB 3 in Action tackles EJB 3 and the Java Persistence API head-on, providing practical code samples, real-life scenarios, best practices, design patterns, and performance tuning tips. This book builds on the contributions and strengths of seminal technologies like Spring, Hibernate, and TopLink.

EJB 3 is the most important innovation introduced in Java EE 5.0. EJB 3 simplifies enterprise development, abandoning the complex EJB 2.x model in favor of a lightweight POJO framework....

See more details below
Other sellers (Paperback)
  • All (22) from $1.99   
  • New (7) from $25.49   
  • Used (15) from $1.99   
Sending request ...


EJB 3 in Action tackles EJB 3 and the Java Persistence API head-on, providing practical code samples, real-life scenarios, best practices, design patterns, and performance tuning tips. This book builds on the contributions and strengths of seminal technologies like Spring, Hibernate, and TopLink.

EJB 3 is the most important innovation introduced in Java EE 5.0. EJB 3 simplifies enterprise development, abandoning the complex EJB 2.x model in favor of a lightweight POJO framework. The new API represents a fresh perspective on EJB without sacrificing the mission of enabling business application developers to create robust, scalable, standards-based solutions.

EJB 3 in Action is a fast-paced tutorial, geared toward helping you learn EJB 3 and the Java Persistence API quickly and easily. For newcomers to EJB, this book provides a solid foundation in EJB. For the developer moving to EJB 3 from EJB 2, this book addresses the changes both in the EJB API and in the way the developer should approach EJB and persistence.

Purchase of the print book comes with an offer of a free PDF, ePub, and Kindle eBook from Manning. Also available is all code from the book.

Read More Show Less

Product Details

  • ISBN-13: 9781933988344
  • Publisher: Manning Publications Company
  • Publication date: 3/1/2007
  • Edition number: 1
  • Pages: 712
  • Product dimensions: 7.40 (w) x 9.20 (h) x 1.60 (d)

Meet the Author

Debu Panda is a seasoned Java architect, developer, and community leader. He has authored more than 35 articles on enterprise Java and SOA technologies and two books on enterprise middleware.

Reza Rahman is a Senior Software Engineer and Technology Outreach Advocate. A frequent speaker, Reza is a member of the Java EE 6 and EJB 3.1 expert groups.

Ryan Cuprak is a technology analyst and president of the Connecticut Java Users Group. He is a Sun Certified NetBeans IDE Specialist.

Michael Remijan is a Java Technology Team Lead, Developer, and college Instructor. He has numerous Sun Certifications, and actively writes articles on a variety of Java related technologies.

Read More Show Less

Table of Contents

Preface     xix
Acknowledgments     xxi
About this book     xxiv
Overview of the EJB Landscape     1
What's what in EJB 3     3
EJB overview     5
EJB as a component     5
EJB as a framework     7
Layered architectures and EJB     9
Why choose EJB 3?     12
Understanding EJB types     14
Session beans     16
Message-driven beans     16
Entities and the Java Persistence API     17
Getting inside EJB     19
Accessing EJB sendees: the EJB container     20
Accessing JPA services: the persistence provider     20
Gaining functionality with EJB services     21
Renaissance of EJB     23
HelloUser Example     24
Simplified programming model     25
Annotations instead of deployment descriptors     26
Dependency injection vs. JNDI lookup     27
Simplified persistence API     27
Unit-testable POJO components     29
EJB 3 and Spring     30
Summary     32
A first taste of EJB     33
New features: simplifying EJB     35
Replacing deployment descriptors with annotations     35
Introducing dependency injection     40
Introducing the ActionBazaar application     41
Starting with the architecture     42
An EJB 3-based solution     43
Building business logic with session beans     45
Using stateless beans     45
The stateless bean client     47
Using stateful beans     50
A stateful bean client     54
Messaging with message-driven beans     56
Producing a billing message     57
Using the order billing message processor MDB     59
Persisting data with EJB 3 JPA     61
Working with the Java Persistence API     62
Using the EntityManager     65
Summary     67
Building Business Logic with EJB 3     69
Building business logic with session beans     71
Getting to know session beans     72
Why use session beans?     73
Session beans: the basics     75
Understanding the programming rules     78
Conversational state and session bean types     79
Bean lifecycle callbacks     79
Stateless session beans      83
The BidManagerBean example     84
Using the @Stateless annotation     86
Specifying bean business interfaces     87
Using bean lifecycle callbacks     90
Stateful session beans     93
Additional programming rules     94
The BidderAccountCreatorBean example     94
Business interfaces for stateful beans     98
Stateful bean lifecycle callbacks     98
Session bean clients     102
Using the @EJB annotation     104
Injection and stateful session beans     104
Performance considerations for stateful beans     105
Using stateful session beans effectrvely     105
Stateful session bean alternatives     107
Session bean best practices     108
Summary     109
Messaging and developing MDBs     110
Messaging concepts     111
Message-oriented middleware     112
Messaging in Action Bazaar     112
Messaging models     114
Introducing Java Messaging Service     117
Developing the JMS message producer     117
The JMS message interface     119
Working with message-driven beans     121
Why use MDBS?     122
Programming rules     124
Developing a message consumer with MDB     124
Using the @MessageDriven annotation     127
Implementing the MessageListener     127
Using ActivationConfigProperty     128
Using bean lifecycle callbacks     132
Sending JMS messages from MDBs     135
Managing MDB transactions     136
MDB best practices     137
Summary     139
Learning advanced EJB concepts     140
EJB internals     141
EJB behind the scenes     141
EJB context: accessing the runtime environment     143
Accessing resources using DI and JNDI     146
Resource injection using @Resource     146
The @Resource annotation in action     152
Looking up resources and EJBs     155
AOP in the EJB world: interceptors     157
What is AOP?     157
What are interceptors?     158
Specifying interceptors     160
Implementing business interceptors     162
Lifecycle callback methods in the interceptor class     165
Scheduling: the EJB 3 timer service     167
What are timers?      168
Using the timer service     169
When to use EJB timers     174
Summary     175
Transactions and security     176
Understanding transactions     177
A transactional solution in ActionBazaar     178
ACID properties     178
Transaction management internals     181
Two-phase commit     183
Transaction management in EJB     184
Container-managed transactions     185
Snag-It ordering using CMT     185
The @TransactionManagement annotation     186
The @TransactionAttribute annotation     187
Marking a CMT for rollback     191
Transaction and exception handling     193
Bean-managed transactions     196
Snag-It ordering using BMT     196
Getting a UserTransaction     198
Using UserTransaction     199
The pros and cons of BMT     201
Exploring EJB security     202
Authentication vs. authorization     202
Users, groups, and roles     203
A security problem in ActionBazaar     203
EJB 3 and Java EE security     205
Declarative security     208
Using EJB programmatic security     210
Summary     213
3 Diving into the Java Persistence API (JPA)     215
Implementing domain models     217
Domain modeling and the JPA     218
Introducing domain models     219
The ActionBazaar problem domain     219
Domain model actors     222
The EJB 3 Java Persistence API     224
Domain objects as Java classes     225
Implementing domain objects with JPA     227
The @Entity annotation     228
Persisting entity data     229
Specifying entity identity     233
The Embeddable annotation     238
Entity relationships     239
@OneToOne     240
@OneToMany and @ManyToOne     244
@ManyToMany     247
Summary     249
Object-relational mapping     250
The impedance mismatch     251
Mapping objects to databases     252
Introducing O/R mapping     257
Mapping entities     258
Specifying the table     261
Mapping the columns     262
Using @Enumerated     264
Mapping CLOBs and BLOBs      265
Mapping temporal types     265
Mapping an entity to multiple tables     266
Generating primary keys     267
Mapping embeddable classes     270
Mapping entity relationships     273
Mapping one-to-one relationships     273
One-to-many and many-to-one     278
Many-to-many     281
Mapping inheritance     284
Single-table strategy     285
Joined-tables strategy     287
Table-per-class strategy     288
Mapping polymorphic relationships     291
Summary     292
Manipulating entities with EntityManager     293
Introducing the EntityManager     294
The EntityManager interface     294
The lifecycle of an entity     297
Persistence contexts, scope, and the EntityManager     301
Using the EntityManager in ActionBazaar     303
Creating EntityManager instances     304
Container-managed EntityManagers     305
Application-managed EntityManager     308
Managing persistence operations     313
Persisting entities     314
Retrieving entities by primary key     319
Updating entities      325
Deleting entities     328
Controlling updates with flush     330
Refreshing entities     331
Entity lifecycle listeners     333
Using an entity listener     334
Default listener classes     336
Listener class execution order and exclusion     337
Entity operations best practices     338
Summary     338
Using the query API and JPQL to retrieve entities     340
Introducing the query API     341
The big picture     341
Anatomy of a query     343
Defining named queries     344
Executing the queries     345
Creating a query instance     346
Working with the Query interface     347
Specifying query hints     353
Introducing JPQL     354
Defining statement types     356
Using the From clause     358
Conditional expressions and operators     362
Working with JPQL functions     367
Using a Select clause     370
Using aggregations     372
Ordering the query result     374
Using subqueries     374
Joining entities      376
Bulk updates and deletes     379
Native SQL queries     380
Using dynamic queries with native SQL     381
Using a named native SQL query     382
Summary     383
Putting EJB 3 Into Action     385
Packaging EJB 3 applications     387
Packaging your applications     389
Dissecting the Ear file     391
Loading the Ear module     392
Exploring class loading     394
Class-loading basics     394
Exposing the classic parent delegation model     396
Class loading in Java EE applications     398
Dependencies between Java EE modules     398
Packaging session and message-driven beans     400
Packaging EJB-JAR     400
Deployment descriptors vs. annotations     402
Overriding annotations with deployment descriptors     406
Specifying default interceptor settings     407
Using vendor-specific annotations and descriptors     408
Packaging entities     410
Exposing the persistence module     410
Describing the persistence module with persistence.xml     411
Performing O/R mapping with orm.xml     418
Best practices and common deployment issues     422
Packaging and deployment best practices     422
Troubleshooting common deployment problems     423
Summary     424
Effectively integrating EJB 3 across your application tiers     425
Design patterns and web technologies     426
Presentation tier     427
Using the Entity Access Object pattern     429
Visiting the Session Facade pattern     434
Accessing session beans from the web tier     439
Accessing session beans using dependency injection     441
Referencing session beans from helper classes     442
Dealing with transactions     445
Working with stateful session beans     446
Using JPA from the web tier     447
Using a container-managed entity manager     448
Using an application-managed EntityManager with JTA transactions     450
Accessing an application-managed EntityManager outside the container     451
Summary     454
Taming wild EJBs: performance and scalability     455
Handling entity locking issues     457
Understanding locking types     458
Optimistic locking and entity versioning     461
EntityManager and lock modes      462
Improving entity performance     464
Remodeling and schema redesign     464
Tuning the JDBC layer     468
Reducing database operations     470
Improving query performance     474
Caching     478
Improving performance of EJB 3 components     483
Session bean performance     484
Improving MDB performance     487
Clustering EJB applications     488
Collocated architecture     489
Load-balancing stateless session beans     490
Clustering statefal session beans     493
Entities and clustered cache     495
Summary     496
Migration and Interoperability Issues     497
Migration to EJB 3     499
Backward compatibility and interoperability with EJB 2     500
Packaging EJB 2 and EJB 3 together     501
Invoking EJB 2 from EJB 3     502
Using EJB 3 from EJB 2     503
Migrating session beans     505
Converting interface and bean classes     506
Resource usage     510
Transactions and security settings     511
Client applications     511
Migrating message-driven beans     313
Migrating CMP 2 entity beans to the EJB 3 JPA     513
Redesign your domain model     514
Using DTOs as entities     517
Entity bean classes and interfaces     519
Client applications     526
Migrating JDBC DAOs to use the EJB 3 JPA     529
Identifying entities     529
Reworking a DAO implementation class to use the EntityManager API     530
Swapping SQL queries for JPQL     531
Helping O/R frameworks to use the EJB 3 JPA     533
Approaches to migration     535
Strategies     535
Manual vs. automated     536
Summary     536
Exposing EJBs as web services     537
What is a web service?     539
Identifying web service components     541
Web services styles     547
Approaches to developing web services     548
JAX-WS: Java EE 5 web services platform     549
Introducing the web services platform     549
Why choose EJB over a POJO for a web service?     550
Developing EJB web services with JAX-WS 2.0     551
Using the @WebService annotation     553
Specifying the web service style with @SOAPBinding      555
Using @WebMethod     557
Using the @WebParam annotation     558
Using the @WebResult annotation     560
Using @OneWay and @HandlerChain     561
Accessing a web service from an EJB     562
Accessing the PlaceBid web service     562
EJB as a web service client     564
Best practices for web service development     565
Summary     567
EJB 3 and Spring     568
Introducing the Spring framework     570
Benefits of the Spring framework     571
The inversion of control principle     571
The separation of concerns principle     572
Using JPA with Spring     573
Building JPA EAOs for Spring     574
Configuring Spring to use the JPA     577
Combining the power of EJB 3 and Spring     581
Developing Spring-enabled EJBs     581
Using session beans from Spring beans     585
Summary     585
RMI and JNDI     587
Reviewing relational databases     596
Annotations reference     603
Deployment descriptors reference     623
Installing and configuring the Java EE 5 SDK      646
Resources     660
Index     663
Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)