Advanced JEE Training
This is a 7 week course specially designed for software developers with little or no exposure to J2EE but are looking to build large-scale, scalable, robust, secure, transactional distributed e-business systems using the advanced features of the J2EE platform. This course teaches advanced concepts and technologies of the JEE platform with an emphasis in the areas of performance, security, distributed transactions, advanced persistence mapping of components, asynchronous components and Web tier architecture. On completion, attendees would be able to:
- Master JEE architecture
- Design and implement Entity beans, Stateless and Stateful Session beans, Message Driven and Timer beans
- Develop Management Extensions
- Design and develop n-tier applications
- Master the transaction model in J2EE
- Design and implement synchronous and asynchronous enterprise components
- Design and implement a Model 2 framework for the Web tier
Prerequisites
Java
Curriculum
-
Introduction
- N-tier Architectures
- What is JEE?
- EJB EcoSystem
-
Fundamentals
- Apache Ant
- Build file & Targets
- Introduction CVS
- Eclipse plugin architecture
- CVS Eclipse plugin
- Versioning
- Branching & Releasing
-
Servlets and JSP
- Web Server vs. Servlet Container
- HTML & DHTML
- Servlet Lifecycle
- web.xml
- JSP
- JSTL
- Servlet Listeners
- Filters
- File upload
- Image Servlets
- WAR file
-
EJB Fundamentals
- Types of Beans
- Distributed Objects and Middleware
- Enterprise Bean Class
- EJB Object
- Home Object
- Local Interfaces
- Deployment Descriptors
- Vendor Specific Files
- Ejb-jar file
-
Writing First Bean
- How to develop an EJB Component
- Deployment descriptors
- Ejb-jar file
- Deploying the Bean in Jboss
- Understanding how to call EJBs
- Looking up Home Object in JNDI tree
-
Session Beans
- Session Bean Lifetime
- Stateful Session Beans
- Stateless Session Beans
- Pooling with Session Beans
- Rules Governing Conversational State
- Activation and Passivation
-
Entity Beans
- Object-Relational Mapping
- What is an Entity Bean?
- Files that make up an Entity Bean
- Features of Entity Beans
- Failure Survival
- Object representation of database view
- Object pooling
- Creation and Removal of Entity Beans
- Finding beans via find() methods
- Modifying Entity Bean Data without using EJB
- Entity Concepts
-
Bean-Managed Persistent Entity Beans (BMP)
- Finding Entity Beans via Finder Methods
- Bean-Managed Entity Bean Example
- Remote Interfaces
- Creating custom primary key
- Setting up the Database (MySQL)
- Entity Bean Lifecycle
-
Container-Managed Persistent Entity Beans (CMP)
- Writing CMPs by subclassing
- Abstract Persistent Schema
- EJBQL Query Language
- ejbSelect() methods
- Implementation guidelines
- Lifecycle of a CMP bean
-
JMS & Message Driven Beans (MDBs)
- The Java Message Service
- Messaging Domains
- JMS API
- Integrating JMS with EJB
- What are Message-Driven Beans?
- Developing a Message-Driven Bean
- Introduction to Advanced Concepts
- Message Ordering
- ejbRemove() calls
- Poison Messages
- Rollbacks
- Message selections
- Synchronous and Asynchronous message reception
- Persistent and non-persistent Messages
- Durability
-
Web Services
- Web Services Standards
- XML Artifacts and Platform Independence
- Implementing a Web Service
- JAX-RPC Service Endpoint Interface
- WSDL and the XML/Java Mapping
- Packaging & Deploying Web Service Session Bean
- Implementing a Web Service Client
-
Hibernate
- Architecture
- Install & configure
- Mapping associations
- Connections
- Session object
- HQL, native SQL
- Caching
- Interceptors
-
Struts
- MVC Pattern
- Struts components (ActionServlet, RequestProcessor, Action, ActionMapping, ActionForm)
- Configuration files (struts-config.xml)
- Taglibs
- Message Resources
- Validation framework
-
Tiles
- Introduction
- Integration with Struts
-
Quartz
- Scheduler
- Job & StatefulJob
-
Transactions
- Atomic operations
- Network or machine failures
- Sharing data
- ACID properties
- Flat transactions
- Nested Transactions
- Other transaction models
- Underlying transaction system abstraction
- Declarative, Programmatic and client-initiated transactions
- Choosing a transaction style
- EJB Transaction attributes
- CORBA Object Transaction Service
- Java Transaction Service
- Java Transaction API
- Declarative vs. Programmatic transactions with example
- Client side transactions
- Concurrency Control
- Dirty Read Problem
- Phantom Problem
- Transaction Isolation Summary
- Pessimistic and Optimistic Concurrency Control
- Distributed Transactions
- Durability and 2-phase Commit Protocol
- Transactional Communications Protocol
- Transaction Contexts
- Designing Transactional conversations in EJB
-
Security
- Authentication in Web Applications
- Authorization
- Confidentiality and Integration
- Authentication in EJB
- Authorization in EJB
- Security propagation
- IIOP/SSL
- Web Services Security
- XML Digital Signature and XML Encryption
- WS-Security
-
EJB Timers
- EJB Timer Service
- Integration between EJB and Timer service
- Developing an example
- Strengths and Limitations of EJB Timer Service
-
Persistence Best Practices
- Procedural vs. Object -oriented
- Caching
- Enforcement of Schema independence
- Performance
- App Server and Database Independence
- Hard1-coded vs. Soft-coded SQL
- When to use stored procedures
- Normalizing and de-normalizing
- Using object model to drive Data model
- Impacts of Database updates
- Handling Large Resultsets
-
EJB Performance Optimizations
- Guaranteed response time
- Session Façade for better performance
- When to use Local and Remote interfaces
- Partitioning resources
- Tuning Stateless Session Beans
- Tuning Stateful Session Beans
- Tuning Message Driven Beans
- Tuning Entity Beans
- Tuning JVM
-
Clustering
- Partitioning clusters
- Instrumenting clustered EJBs
- How to cluster EJBs
- Idempotence
- Clustering stateless session beans
- Clustering stateful session beans
- Entity bean clustering
- message driven bean clustering
- Access Logic
-
Building a complete application
- Business Problem
- Technical Requirements
- Business Logic
- Presentation Logic
