WA1088 J2EE Architecture and Patterns using Eclipse and JBoss Training and Courseware Course Outline |
|
| Chapter 1. Introduction |
|
- Introduction
- Objectives
- Java Web Application Architecture
- J2EE Architecture
- Web Application Programming Model – MVC
- Patterns
- Factory Method
- Singleton
- Command
- Modeling the Structure Aspect of Command Pattern
- Modeling the Behavior Aspect of Command Pattern
- Facade
- Adapter
- Proxy
- Publish-Subscribe
- Modeling the Structural Aspect of the Publish-Subscribe Pattern
- Modeling the Behavioral Aspect of the Publish-Subscribe Pattern
|
|
| Chapter 2. Presentation Tier Patterns |
|
- Objectives
- Why use the intercepting filter pattern?
- Uses for Filtering
- What is a filter?
- Features of filters
- The Filter interface
- How a filter works
- In what order?
- A simple logging filter
- Configuring the filter
- Mapping the filter
- The Web Deployment Descriptor
- Common filter tasks
- Request and Response Wrappers
- How Struts uses this design pattern?
- Front Controller Pattern
- Command and Controller Strategy
- Advantages of command and controller strategy
- How Struts uses this strategy?
- View Helper Pattern
- Use JavaBean as result bean helper
- Use JavaBean as command bean helper
- Use custom tag for display logic written in Java
- Components of a Tag library
- JSTL Overview
- How Struts uses this pattern
- Problem
- Solution 1 – use jsp:include
- Solution 2 – use Struts templates
- Solution 2 continued
- Transform View Pattern
- The Music Collection Example – Sample XML file
- The Music Collection Example – Retrieving owner details
- The Music Collection Example – Retrieving the core data
- The Music Collection Example – Current Output
- Transformation with Java
- Reading an XML
- Transforming to HTML
- Transforming to System.out
- Summary
|
|
| Chapter 3. Presentation Tier Design Considerations |
|
- Objectives
- HttpSession
- Why on the server?
- Session Tracking Options
- URL Rewriting
- Do not store large Object Graphs in HttpSession
- Session and Clustering
- The problem
- The design pattern that fixes it
- A client side fix
- Struts implementation
- Typical validation rules
- Client-side validations
- Jakarta commons validation framework features
- Not resetting JavaBeans between requests
- Passing HttpServletRequest to business tier
- Summary
|
|
| Chapter 4. Business and Integration Tier Patterns |
|
- Objectives
- Business Delegate Pattern
- How it works
- Data Transfer Object Pattern
- DTO Example (Output)
- DTO Example (Input)
- Role of DTO in MVC
- Trouble with DTO
- Value Object Pattern
- Multiple Value Objects
- Best Practice – derive EJB from the Value Object
- Composite Entity Pattern
- An example
- Class Diagram
- How the client interacts
- Value Object Assembler
- Value List Handler
- How does it work?
- How does it work - continued
- Design Considerations
- Service Locator
- Data Access Object (DAO)
- DAO Implementation Guidelines
- Service Activator
- MDB- Integrating JMS and EJB
- Message-Driven Beans Are Different From Other EJBs
- Message-Driven Beans are Stateless
- Message-Driven Bean Interfaces
- Example: Message Counter
- Class MessageCounter
- Class MessageCounter
- Processing the Message
- Deployment Descriptor Entry
- Summary
|
|
| Chapter 5. Business and Integration Tier Best Practices
|
|
- Objectives
- Exception Handling
- Exception Handling (cont.)
- Use java:comp to locate resources
- Example: Defining Data Source Resource Reference in WebSphere Studio
- Use java:comp to locate resources - continued
- Use Container Authentication.
- Use JDBC Connection Pooling
- Prepared Statement Cache.
- Release JDBC Resources
- Optimize database first
- DB2 Tuning - MaxAppls
- DB2 Tuning - MaxAgents
- DB2 Tuning - Buffer Pool Tuning
- DB2 Tuning - Configuring buffpage
- DB2 Tuning - Evaluating the buffer pool size
- DB2 Tuning - Monitoring the database buffer pool
- DB2 Tuning - reorgchk
- Using log4j from an Web application
- Using Log4J
- Example servlet using log4j
- Summary
|
|
| Chapter 6. Other EJB Patterns |
|
- Objectives
- Session Façade
- Session Façade Pattern
- Session Façade
- Miscellaneous Details
- Message Façade Pattern
- Message Façade
- Message façade pattern shortcomings
- Version Number pattern
- Version Number Pattern
- Sequence Blocks
- Stored Procedures for Autogenerated Keys
- Fast Lane Pattern
- Summary
|
|
| Chapter 7. Transaction Management |
|
- Topics
- What is a transaction?
- ACID properties
- Transaction demarcation
- Resource managers
- Isolation levels
- Isolation Level
- WebSphere - Setting Isolation Level for EJB
- WebSphere - CMP EJB Access Intent
- WSAD - Setting Access Intent
- WSAD - Setting Data Source Isolation Level
- WebLogic – Isolation Level
- Basics
- Manage your own transactions
- Change isolation level
- EJB Transaction Basics
- Transaction Propagation
- Client Managed Transaction
- Bean Managed Transaction
- Container Managed Transaction
- Transaction Outcome
- Vetoing Transaction
- Let the container manage transactions
- CMT and the Session Façade
- CMT and other EJBs
- Transactions and Message Driven Beans
- Distributed transaction
- Two-phase commit
- Aborting a global transaction
- Optimizations
- Window of doubt
- JMS, EJB, XA
- Using XA-enabled data source
- Increase concurrency by reducing transaction isolation level
- Keep transactions short
- Multi-step wizard “the wrong way”
- What’s wrong?
- Multi-step wizard “the right way”
- Summary
|
|
| Chapter 8. Performance |
|
- Topics
- Overview
- Visitor, hit, user
- Load, throughput, response time
- Response time
- Effect of load on the system
- Saturation and buckle points
- Scaling
- Performance and scalability are different!
- Problem Areas
- CPU utilization
- Measure CPU utilization everywhere
- Symptoms of underutilization
- What causes underutilization?
- Network capacity problem?
- Synchronization problem?
- Slow external resource?
- Is the test pushing the system hard enough?
- Does your system scale?
- Symptoms of burstiness
- Infrequent synchronization problem?
- Test driver synchronization problem?
- Slow back-end systems?
- Slow garbage collection?
- Timeout problems?
- Erratic network traffic?
- Symptoms of overutilization
- The components of CPU usage
- High User CPU
- High System CPU
- High Wait CPU
- Server hanging
- Thread dump in WebSphere v5
- Thread dump file
- Uneven cluster loading
- Load balancer configured correctly?
- Plan of attack
- Overview
- What is WPT?
- Download and install
- record
- Configure your system to use record
- Record a session
- Output from record
- Details of running a stress test
- Best Practices
- Summary
|
|
| Chapter 9. Messaging Tier Patterns |
|
- Objectives
- Java Message Service
- JMS Programming: Overview
- The JMS Interfaces
- JMS PTP Programming: Example
- One-to-one (Local)
- One-to-one (Remote)
- Request-Reply
- One-to-Many
- Many-to-one
- Many-to-one With Reply
- Many to Many
- Hub and Spoke
- Route to different queues based on message content
- Break a composite message and process separately
- Combine related messages to a single message
- Send Large Messages Using the Memento Pattern
- Summary
|
|
|
Chapter 10. Architecting Security |
|
- Objectives
- Security Functionality
- What Can You Secure?
- Challenge Mechanism
- Basic Challenge
- Client Certificates
- Form-based Authentication
- Form-based Authentication in J2EE
- User Registry
- LDAP User Registry
- Custom User Registry
- HTTP Single Sign On (SSO)
- HTTP Single Sign On (cont.)
- J2EE Authorization Model
- WebSphere Authorization Model
- Protecting Web Resources
- Protecting EJB Methods
- EJB Delegation Policies
- Delegation Scenario
- Form Based Logout
- Architecture Guidelines
|
|
| Chapter 11. Build and Deployment |
|
- What is Ant?
- Writing a Build Script
- How to run Ant?
- Using ant from WSAD
- Running Ant in WSAD
- Advanced Task
- Automating Deployment
- WebSphere Deployment Tasks
|
|
| Chapter 12. JUnit and Eclipse |
|
- Objectives
- What is JUnit?
- Who uses JUnit?
- Why JUnit?
- The xUnit Philosophy
- A JUnit Test
- Running the tests
- Swing-based Test Runner
- Text-based Test Runner
- JUnit Basics
- assertTrue
- assertEquals
- assertSame
- assertNull
- The failure message
- The Test Class
- The Test Method
- The Test Suite
- JUnit Design
- JUnit with Ant
- JUnit with Eclipse
- Create a Test Case
- Running Tests
- Eclipse Test Runner Icons
- Rerun an individual test
- Failure Trace
- Debug with JUnit
- Test Suite Wizard
- Testing Strategies
- Specific Techniques
- Testing simple Java classes
- Testing with databases
- Testing web applications
- Test-Driven Design
- Test-Driven Design
- Parting Thoughts
- Summary
|
|
| Chapter 13. Struts Architecture and Overview |
|
- Objectives
- Review: MVC Model
- Review: Request, Session and Application
- What is Struts?
- Struts Flow
- Components in Struts
- The Model
- The View
- The Controller
- Struts Flow
- struts-config.xml
- struts-config.xml Content
- The element in the struts-config.xml
- The element in the struts-config.xml
- The element in the struts-config.xml
- The element in the struts-config.xml
- Sample struts-config.xml
- The Role of web.xml for the Application
- Configuring Struts in the web.xml
- web.xml Content
- Steps to Configuring Struts in the web.xml
- Step 1. Configuring the Action Servlet Instance in the web.xml
- Action Servlet Config Example
- Step 2. Configuring the Action Servlet Mapping in web.xml
- Prefix Mapping Example
- Extension Mapping Example
- Step 3. Configuring the Struts Tag Libraries in the web.xml
- Sample web.xml
- Summary
|
|