Chapter 1. Java Enterprise Edition (EE) Overview
|
| |
- Introduction to Java Platform
- Java Community Process (JCP)
- Introduction to Java EE
- Why Move to Java EE
- Java EE - New and Enhanced Features
- Java EE Software Packaging
- Java EE Technologies
- Summary
|
| |
Chapter 2. Introduction to Rational Application Developer (RAD) v7.5
|
| |
- The RAD 7.5 Product
- Eclipse Platform
- Rational Web Developer
- Rational Application Developer
- Key Features in RAD v7.5
- Views, Perspective, and Editor Areas
- Basic Operations with RAD Views and Perspectives
- The Java Perspective
- The Debug Perspective
- Navigator View
- Package Explorer
- Outline View
- Task and Problems View
- Build and Validation
- Import and Export Project
- Project Interchange Feature
- Code Completion, Templates and Snippets
- Searching
- Setup Compiler Class Path
- JRE Switching
- Migrating Workspace from RAD v6.0 or RAD v7.0
- Backward Compatibility with RAD v7.0
- References
- Summary
|
| |
Chapter 3. Enterprise JavaBeans (EJBs) Overview
|
| |
- Need for EJBs
- Distributed Computing
- Distributed Transaction
- Distributed Security
- What are EJBs?
- Main Characteristics of EJBs
- EJB Remote Method Call
- EJB Architecture Components
- EJB Client
- EJB JAR File
- EJB Container
- EJB Server
- Enterprise JavaBeans
- Session Beans
- Entity Beans
- Java Persistence API - Entities
- Message-Driven Beans (MDBs)
- EJB Specification
- Summary
|
| |
Chapter 4. Stateless Session Beans
|
| |
- Session Beans
- Stateless Session Bean
- Stateless Session Bean Pooling
- Stateless Session Bean Examples
- Stateful Session Bean
- Stateful Session Bean Examples
- Annotations
- Stateless Session Bean Components
- Example: Business Interface
- Example: Bean Class
- Alternative Example
- JNDI - Overview
- Example: The Client
- Business Interface Details
- Bean Class Details
- Session Bean Lifecycle
- Stateless Session Bean Lifecycle
- Summary
- Creating A Session Bean
- Creating An EJB Project
- The Client JAR
- EJB Projects
- Creating an EJB
- Creating the EJB
- Coding the Bean
- Updating Interfaces
- Dependencies
|
| |
Chapter 5. Stateful Session Beans
|
| |
- Stateful Session Bean
- Stateful Session Beans
- Session Bean Lifecycle
- Stateful Session Bean Lifecycle
- Stateful Session Bean Components
- Stateful Session Bean Example
- Stateful Session Bean Client
- Removing the Bean
- Summary
|
| |
Chapter 6. References and Dependency Injection
|
| |
- Role of References
- EJB Reference Annotations
- Resource Reference Annotations
- Dependency Injection
- Annotation Injection
- Example: Field Level Injection
- Example: Method Level Injection
- Deployment Descriptor Injection
- Example: Deployment Descriptor Injection
- Class Level References
- Multiple References
- EJB References in Deployment Descriptors
- Resource References in Deployment Descriptors
- Reference Lookup
- EJBContext
- JNDI Lookup with EJBContext
- Overriding Reference Annotations
- Default Reference Name
- Resolving References
- mappedName Attribute
- Overloaded Reference Names
- Reference Best Practices
- Summary
|
| |
Chapter 7. Entities and Java Persistence API
|
| |
- Data Persistence
- Java Persistence API
- Entities
- Session Beans Vs Entities
- Entities
- Persisting and Retrieving Data
- Accessing Entities
- EntityManager & Persistence Unit
- Persistence Context
- Entities - Example
- persistence.xml – Hibernate Provider
- persistence.xml – Open JPA Provider
- persistence.xml - Toplink
- Entity Instance Lifecycle
- Creating EntityManager in Session EJB
- Creating EntityManager in a Plain Java Class
- Working With the EntityManager Interface
- Transaction Basics
- Summary
- Creating Entities
- JPA Project
- Creating An Entity
- Generated Entity Class
- Code the Entity
- JPA Tooling
- Dependencies
|
| |
Chapter 8. JPA Entity Lifecycle
|
| |
- Entity Lifecycle
- When is an Entity Managed or Detached?
- Implementing the CRUD Pattern
- Accessing Entities Using Stateless Session Beans
- Inserting Data
- Retrieving Data
- Updating Data
- Deleting Data
- Merging Entities
- Merging Entities (example)
- Life-Cycle Callbacks
- Example: Internal callback
- External Callback Class
- Listener Class - Example
- Synchronizing with Databases
- Entity Lookup
- JPAQL (JPA Query Language)
- Summary
|
| |
Chapter 9. Java Persistence Query Language (JPA QL)
|
| |
- JPA Query Language
- Basic JPAQL Syntax
- Simple SELECT Examples
- Example of Using JPAQL
- The SELECT clause
- Reading Data from Code
- The WHERE Clause
- Example Using JPAQL from Session EJB
- Named Query
- Multiple Named Queries
- Bulk Updates
- Bulk Delete
- Running Native SQL Query
- Native SELECT Query
- Native SQL Delete and Insert
- Named Native Query
- Summary
|
| |
Chapter 10. Basic Entity Relationships
|
| |
- Relationship Between Entities
- Anatomy of a Relationship
- Foreign Key
- Example Schema
- One-to-One Unidirectional
- Creating Entity Instances
- Traversing the Relationship
- The Cascade Behavior
- One-to-One Bidirectional
- Maintaining Bidirectional Links
- Simplifying Bidirectional Links
- Traversing the Relationship
- Summary
|
| |
Chapter 11. Complex Entity Relationships
|
| |
- One-To-Many and Many-To-One
- Many-to-One Unidirectional
- Creating Entity Instances
- Traversing the Relationship
- Modeling One-to-Many
- Maintaining Bidirectional Links
- Creating Entity Instances
- Traversing the Relationship
- Many-to-Many
- Modeling Many-to-Many
- Maintaining Bidirectional Links
- Creating Entity Instances
- Traversing Relationship
- Unidirectional One-to-Many
- Modeling Unidirectional One-to-Many
- Creating Entity Instances
- Traversing the Relationship
- Relationship in JPA QL
- Fetching Optimizations
- Lazy vs. Eager Initialization
- Lazy Initialization
- Various Problems with Lazy Initialization
- Fetch Join Query
- Summary
|
| |
Chapter 12. Entity Inheritance
|
| |
- Inheritance
- Inheritance Example
- Inheritance and Entities
- Inheritance Strategies
- Inheritance Strategy 1: Single Table Per Class Hierarchy
- Single Table Per Class Hierarchy
- Table Structure: Single Table Per Class Hierarchy
- Pros and Cons
- Strategy 2: Table Per Concrete Class
- Table Per Concrete Class
- Table Per Concrete Class: JBoss Warning
- Table Per Concrete Class
- Table Structure: Table Per Concrete Class
- Table Per Concrete Class: Pros and Cons
- Strategy 3: Joined Subclasses
- Joined Subclasses
- Table Structure: Joined Subclasses
- Joined Subclasses: Pros and Cons
- Which Approach To Use?
- Summary
|
| |
Chapter 13. Message-Driven Beans
|
| |
- The Trouble with RMI/IIOP
- Messaging to the Rescue
- Messaging Features
- Message-Oriented Middleware
- Messaging Domains
- Publish/Subscribe
- Point-to-Point
- Java Message Service
- JMS Programming: Overview
- JMS Programming: Overview…
- The JMS Interfaces
- Integrating JMS and EJB
- Message-Driven Beans Are Different From Other EJBs
- Message-Driven Beans Cannot Talk to Their Clients
- Message-Driven Beans are Stateless
- Durable Subscription
- Message-Driven Bean Interfaces
- javax.jms.MessageListener
- javax.jms.Message
- Specialized Message Types
- Lifecycle
- Message Driven Bean - Example
- Message Driven Bean - Client Example (JSP)
- Transactions
- Security
- Load Balancing
- Clustering and Topics
- Clustering and Queues
- A Few Tips
- Poison Messages
- How the Programmer Can Avoid Poison Messages
- How the System Administrator Can Avoid Poison Messages
- Building a Response
- Potential Problems
- A Simple Alternative
- Type Checking and Messages
- Testing Message-Driven Bean
- Summary
- References
- Configuring JMS
- Creating an MDB In RAD
- Coding the MDB
- Specifying The Destination
- Editing WebSphere Bindings
- Set the Activation Spec
|
| |
Chapter 14. EJB Security
|
| |
- Introduction
- How EJB Security Works
- Example Security
- Protecting Web Resources
- Setting EJB Method Permission
- Defining Roles in DD
- Defining Roles in Code
- Specify Role Access in DD
- Specify Role Access in Code
- Disable Security Check
- The Excludes List
- Run As Identity
- Setting Run As Role
- Programmatic EJB Security
- Example Security API
- Role Reference
- Summary
|
| |
Chapter 15. Web Service Access to EJBs
|
| |
- Web Services
- Operation and Implementation
- WSDL
- Typical Development Workflow
- Advantages of Web Services
- Web Services and EJB
- Web Service Clients
- JAX-WS Overview
- JAX-WS Framework
- Java to XML Data Conversion
- Main Goals of JAX-WS
- JAX-WS Server
- WSDL Overview
- WSDL Document Tags
- Web Service EJBs
- Annotate The Session Bean
- Annotate the Methods
- Service Endpoint Interface
- Package and Deploy
- Summary
|
| |
Chapter 16. EJB Timer Service
|
| |
- Container Managed Timer Service
- The Timer Service
- Interaction between Timer Service and EJB
- Timer Service API
- The TimerService Interface
- Creating a Timer
- Getting All Timers
- The Timeout Callback method
- The Timer Interface
- Example: TimerTestBean
- Timer and Transaction
- Limitations of EJB Timer Service
- Summary
|
| |
Chapter 17. Transactions in EJB
|
| |
- Need for Transactions
- Transactions
- ACID Properties
- Transaction Components
- Distributed Transactions
- Distributed Transaction Components - Two Phase Commit
- Java Transaction API (JTA)
- Object Transaction
- EJB Transaction Basics
- Transaction Propagation
- Transaction Outcome
- Container Managed Transaction
- Transaction Attributes
- Container Managed Transaction Settings
- Interacting with Container Managed Transactions
- Container Managed Transaction – Example
- Transaction Attributes Support
- Bean Managed Transaction
- Using the JTA API
- Obtaining the UserTransaction
- Fine Points of Bean Managed Transaction
- Client Managed Transaction
- Transaction Isolation
- Summary
|
| |
Chapter 18. EJB Interceptors
|
| |
- Introduction to Interceptors
- Internal Interceptor
- Example: Internal Interceptor
- External Interceptors
- Default Interceptor - Example
- Another Example
- Class-Level Interceptor - Example
- Setting Class Level Interceptors
- Pre & Post Processing with Interceptors - Example
- Blocking Calls to Business Method Example
- Excluding Default and Class Level Interceptors
- Interceptors on Lifecycle Callbacks
- Summary
|
| |
Chapter 19. EJB Deployment
|
| |
- The Bean Classes
- Dependent Classes
- Business Interfaces
- Client JAR File
- The Deployment Descriptor
- Basic Deployment Descriptor
- Configuring a Session EJB
- Configure Assembly Description
|
| |
Chapter 20. EJB 3 Design Patterns
|
| |
- Introduction
- Impact of EJB Client Type
- Session Façade Pattern
- JPA and Session Façade Pattern
- Façade Example
- Message Façade Pattern
- Message Façade Using Timer Service
- Additional Notes About Message Façade
- The Command Pattern
- Implementing Command Pattern
- Example Command Pattern
- Data Transfer Object (DTO) Pattern
- JPA Entity as DTO
- Problem With JPA Entity as DTO
- Version Number pattern
- JPA and Version Number Pattern
- Primary Key Generation
- JPA and Primary Key Generation
- Fast Lane Pattern
- JPA and Fast Lane Pattern
- Summary
|
| |
Chapter 21. JEE Application Deployment
|
| |
- Overview
- Generate Deployed Code
- Export EAR
- Separate Client side code
- Export EJB Client JAR
- Export Utility JAR
- JEE Deployment
- WebSphere Profiles
- Creating Profiles for RAD
- Administrative Console
- Environment Variable
- Security
- Resources
- Creating JDBC provider
- Creating Data Source
- WebSphere MQ JMS Configuration
- WebSphere MQ JMS Provider
- Connection Factory
- Destination
- Activation Specification
- Installing Applications
- Starting an Application
- Scripting in RAD
- Script Configuration
- Command Assistance Notifications
- Summary
|