| |
| |
Acknowledgments | |
| |
| |
Introduction | |
| |
| |
| |
Overview | |
| |
| |
| |
Overview | |
| |
| |
The Motivation for Enterprise JavaBeans | |
| |
| |
Component Architectures | |
| |
| |
Divide and Conquer to the Extreme with Reusable Services | |
| |
| |
Introducing Enterprise JavaBeans | |
| |
| |
The EJB Ecosystem | |
| |
| |
The Java 2 Platform, Enterprise Edition (J2EE) | |
| |
| |
Summary | |
| |
| |
| |
EJB Fundamentals | |
| |
| |
Enterprise Beans | |
| |
| |
Distributed Objects: The Foundation for EJB | |
| |
| |
Distributed Objects and Middleware | |
| |
| |
What Constitutes an Enterprise Bean? | |
| |
| |
Summary | |
| |
| |
| |
Writing Your First Bean | |
| |
| |
How to Develop an EJB Component | |
| |
| |
The Remote Interface | |
| |
| |
The Local Interface | |
| |
| |
The Home Interface | |
| |
| |
The Local Home Interface | |
| |
| |
The Bean Class | |
| |
| |
The Deployment Descriptor | |
| |
| |
The Vendor-Specific Files | |
| |
| |
The Ejb-jar File | |
| |
| |
Deploying the Bean | |
| |
| |
The Optional EJB Client JAR File | |
| |
| |
Understanding How to Call Beans | |
| |
| |
Running the System | |
| |
| |
Implementing Component Interfaces | |
| |
| |
Summary | |
| |
| |
| |
The Triad of Beans | |
| |
| |
| |
Introduction to Session Beans | |
| |
| |
Session Bean Lifetime | |
| |
| |
Session Bean Subtypes | |
| |
| |
Special Characteristics of Stateful Session Beans | |
| |
| |
Summary | |
| |
| |
| |
Writing Session Bean Web Services | |
| |
| |
Web Services Concepts | |
| |
| |
Implementing a Web Service | |
| |
| |
Implementing a Web Service Client | |
| |
| |
Summary | |
| |
| |
| |
Introduction to Entity Beans | |
| |
| |
Persistence Concepts | |
| |
| |
What Is an Entity Bean? | |
| |
| |
Features of Entity Beans | |
| |
| |
Entity Contexts | |
| |
| |
Summary | |
| |
| |
| |
Writing Bean-Managed Persistent Entity Beans | |
| |
| |
Entity Bean Coding Basics | |
| |
| |
Bean-Managed Persistence Example: A Bank Account | |
| |
| |
Running the Client Program | |
| |
| |
Putting It All Together: Walking through a BMP Entity Bean's Life Cycle | |
| |
| |
Summary | |
| |
| |
| |
Writing Container-Managed Persistent Entity Beans | |
| |
| |
Features of CMP Entity Beans | |
| |
| |
Implementation Guidelines for Container-Managed Persistence | |
| |
| |
Container-Managed Persistence Example: A Product Line | |
| |
| |
Running the Client Program | |
| |
| |
The Life Cycle of a CMP Entity Bean | |
| |
| |
Summary | |
| |
| |
| |
Introduction to Message-Driven Beans | |
| |
| |
Motivation to Use Message-Driven Beans | |
| |
| |
The Java Message Service | |
| |
| |
Integrating JMS with EJB | |
| |
| |
Developing Message-Driven Beans | |
| |
| |
Advanced Concepts | |
| |
| |
JMS Message-Driven Bean Gotchas | |
| |
| |
Summary | |
| |
| |
| |
Adding Functionality to Your Beans | |
| |
| |
Calling Beans from Other Beans | |
| |
| |
Resource Factories | |
| |
| |
Environment Properties | |
| |
| |
Understanding Handles | |
| |
| |
Summary | |
| |
| |
| |
Advanced Enterprise JavaBeans Concepts | |
| |
| |
| |
EJB Best Practices | |
| |
| |
When to Use EJB | |
| |
| |
How to Choose a Web Application Framework to Work with EJB | |
| |
| |
Applying Model Driven Development in EJB Projects | |
| |
| |
Applying Extreme Programming in EJB Projects | |
| |
| |
Testing EJB | |
| |
| |
Implementing Client-Side Callback Functionality in EJB | |
| |
| |
Choosing Between Servlets and Stateless Session Beans as Service Endpoints | |
| |
| |
Considering the Use of Aspect-Oriented Programming Techniques in EJB Projects | |
| |
| |
Reflection, Dynamic Proxy, and EJB | |
| |
| |
Deploying EJB Applications to Various Application Servers | |
| |
| |
Debugging EJB | |
| |
| |
Inheritance and Code Reuse in EJB | |
| |
| |
Writing Singletons in EJB | |
| |
| |
When to Use XML with EJB | |
| |
| |
When to Use Messaging Versus RMI-IIOP | |
| |
| |
Summary | |
| |
| |
| |
Transactions | |
| |
| |
Motivation for Transactions | |
| |
| |
Benefits of Transactions | |
| |
| |
Transactional Models | |
| |
| |
Enlisting in Transactions with Enterprise JavaBeans | |
| |
| |
Container-Managed Transactions | |
| |
| |
Programmatic Transactions in EJB | |
| |
| |
Transactions from Client Code | |
| |
| |
Transactional Isolation | |
| |
| |
Distributed Transactions | |
| |
| |
Designing Transactional Conversations in EJB | |
| |
| |
J2EE Transaction Service and Extended Transactions | |
| |
| |
Summary | |
| |
| |
| |
Security | |
| |
| |
Introduction | |
| |
| |
Web Application Security | |
| |
| |
Understanding EJB Security | |
| |
| |
Secure Interoperability | |
| |
| |
Web Services Security | |
| |
| |
Summary | |
| |
| |
| |
EJB Timers | |
| |
| |
Scheduling | |
| |
| |
EJB and Scheduling | |
| |
| |
The EJB Timer Service | |
| |
| |
Timer Example: CleanDayLimitOrdersEJB | |
| |
| |
Strengths and Limitations of EJB Timer Service | |
| |
| |
Summary | |
| |
| |
| |
BMP and CMP Relationships | |
| |
| |
The CMP and BMP Difference | |
| |
| |
Cardinality | |
| |
| |
Directionality | |
| |
| |
Lazy Loading | |
| |
| |
Aggregation Versus Composition and Cascading Deletes | |
| |
| |
Relationships and EJB-QL | |
| |
| |
Recursive Relationships | |
| |
| |
Circular Relationships | |
| |
| |
Referential Integrity | |
| |
| |
Summary | |
| |
| |
| |
Persistence Best Practices | |
| |
| |
Comparing Entity Beans with Other Persistence Approaches | |
| |
| |
Choosing Between CMP and BMP | |
| |
| |
Choosing the Right Granularity for Entity Beans | |
| |
| |
Persistence Tips and Tricks | |
| |
| |
Summary | |
| |
| |
| |
EJB Integration | |
| |
| |
Why Does Integration Matter? | |
| |
| |
EJB and Integration | |
| |
| |
J2EE Connector Architecture | |
| |
| |
The J2EE Connector API | |
| |
| |
System Contracts | |
| |
| |
Connector Example: OutboundLoanRA | |
| |
| |
Integration Best Practice: When to Use Which Technology | |
| |
| |
Summary | |
| |
| |
| |
EJB Performance Optimizations | |
| |
| |
It Pays to Be Proactive! | |
| |
| |
The Stateful Versus Stateless Debate from a Performance Point of View | |
| |
| |
How to Guarantee a Response Time with Capacity Planning | |
| |
| |
Use Session Facade for Better Performance | |
| |
| |
Choosing Between Local Interfaces and Remote Interfaces | |
| |
| |
Partitioning Your Resources | |
| |
| |
Tuning Stateless Session Beans | |
| |
| |
Tuning Stateful Session Beans | |
| |
| |
Tuning Entity Beans | |
| |
| |
Tuning Message-Driven Beans | |
| |
| |
Tuning Java Virtual Machine | |
| |
| |
Miscellaneous Tuning Tips | |
| |
| |
Choosing the Right EJB Server | |
| |
| |
Summary | |
| |
| |
| |
Clustering | |
| |
| |
Overview of Large-Scale Systems | |
| |
| |
Instrumenting Clustered EJBs | |
| |
| |
Other EJB Clustering Issues | |
| |
| |
Summary | |
| |
| |
| |
Starting Your EJB Project on the Right Foot | |
| |
| |
Get the Business Requirements Down | |
| |
| |
Decide Whether J2EE Is the Right Choice | |
| |
| |
Staff Your Project | |
| |
| |
Design Your Complete Object Model | |
| |
| |
Implement a Single Vertical Slice | |
| |
| |
Choose an Application Server | |
| |
| |
Divide Your Team | |
| |
| |
Invest in Tools | |
| |
| |
Invest in a Standard Build Process | |
| |
| |
Next Steps | |
| |
| |
Summary | |
| |
| |
| |
Choosing an EJB Server | |
| |
| |
J2EE Standard Compliance | |
| |
| |
Pluggable JRE | |
| |
| |
Conversion Tools | |
| |
| |
Complex Mappings | |
| |
| |
Third-Party JDBC Driver Support | |
| |
| |
Lazy Loading | |
| |
| |
Deferred Database Writes | |
| |
| |
Pluggable Persistence Providers | |
| |
| |
In-Memory Data Cache | |
| |
| |
Integrated Tier Support | |
| |
| |
Scalability | |
| |
| |
High Availability | |
| |
| |
Security | |
| |
| |
IDE Integration | |
| |
| |
UML Editor Integration | |
| |
| |
Intelligent Load Balancing | |
| |
| |
Stateless Transparent Fail-over | |
| |
| |
Clustering | |
| |
| |
Java Management Extension (JMX) | |
| |
| |
Administrative Support | |
| |
| |
Hot Deployment | |
| |
| |
Instance Pooling | |
| |
| |
Automatic EJB Generation | |
| |
| |
Clean Shutdown | |
| |
| |
Real-Time Deployment | |
| |
| |
Distributed Transactions | |
| |
| |
Superior Messaging Architecture | |
| |
| |
Provided EJB Components | |
| |
| |
Web Services | |
| |
| |
Workflow | |
| |
| |
Open Source | |
| |
| |
Specialized Services | |
| |
| |
Nontechnical Criteria | |
| |
| |
Summary | |
| |
| |
| |
EJB-J2EE Integration: Building a Complete Application | |
| |
| |
The Business Problem | |
| |
| |
A Preview of the Final Web Site | |
| |
| |
Scoping the Technical Requirements | |
| |
| |
Example Code | |
| |
| |
Summary | |
| |
| |
| |
RMI-IIOP and JNDI Tutorial | |
| |
| |
| |
CORBA Interoperability | |
| |
| |
| |
Deployment Descriptor Reference | |
| |
| |
| |
The EJB Query Language (EJB-QL) | |
| |
| |
| |
EJB Quick Reference Guide | |
| |
| |
Index | |