Course Number: ENT.091
Duration: 3 weeks (full-day sessions) OR 8-10 weeks (weekend/evening sessions)
Training Overview: This course is geared towards training attendees to develop scalable enterprise Java applications using enterprise Java technologies:
- Hibernate
- Spring Framework
- Java Web Services & SOA
- Java Messaging Service (JMS)
- Struts Framework
- JSP & JSTL (JSP Standard Tag Library)
Location and Pricing: Most of our courses are conducted online OR at our training facility and are customized to meet our students needs. We also provide customized onsite training at our clients' locations. Pricing for an online course depends on if its a weekend/evening course or a full day course. The weekend/evening courses are most cost-effective as they are spread over a period of weeks giving you ample time to complete the hands-on exercises. To receive a customized proposal that will fit your schedule and price quote, please contact us 
Training Prerequisites: Beginning Java Application Development or equivalent experience.
Training format: This class is 60% lecture, 40% hands-on, with one-on-one dedicated time-slots with the instructor.
Training Materials: All students receive a copy of related courseware / material.
Software Needed on Each Student PC:
- Any operating system that supports Java 1.5.0 or later
- Java SE SDK 1.5, 1.6, or later
- Java IDE of your choice (We will advise on specific versions of the software required based on your standard development and production environments.)
- Additional software - please contact us for a detailed setup sheet
Training Objectives: To train attendees on developing scalable enterprise Java applications using enterprise Java technologies:
- Hibernate
- Spring Framework
- Java Web Services & SOA
- Java Messaging Service (JMS)
- Struts Framework
- JSP & JSTL (JSP Standard Tag Library)
Training Outline:
- Hibernate See Details Close Section
- Introduction to Hibernate
- Issues with Persistence layers and Object-Relational Mapping (ORM)
- Hibernate Overview and Benefits
- Hibernate architecture overview
- POJO (Plain Old Java Object) Based Mapping
- Getting started with Hibernate quickly
- Overview of the Hibernate distribution
- Configuring Hibernate
- hibernate.cfg.xml file
- SessionFactory configuration
- Connection properties, Database dialect
- Configuration class, Session Interface
- "Hello World" Program for Hibernate
- Mapping a Class
- Persistent Entity Class, Hibernate Mapping
- File, Mapping the Entity Class
- Primary keys: Id property, Generated Id
- Hibernate Type System
- Working with sessions and Persistent Objects
- Logging - log4j Overview and configuration for Hibernate
- Querying
- Inserting and Updating Entities
- HQL - Hibernate Query Language Overview
- The Query Interface
- Creating and working with queries
- Named Queries, Projection Queries, Aggregate Queries
- The Persistence Lifecycle
- Transaction Overview and Transactions in Hibernate
- Hibernate Transaction API (in Managed and Non-managed Environments)
- The lifecycle of managed objects
- Persistent, transient, and detached objects
- The Persistence (Session) Context (Lifespan, Relation to Managed Objects, Propagation)
- Contextual Sessions
- Synchronization to the Database
- The Session as cache
- Optimistic Locking / Versioning
- Detached Objects and Optimistic Locking
- Versioning overview and Using Versioning
- Locking Objects
- Relationships
- Object Relationship Overview
- Mapping Collections of Value Objects
- Entity Relationships: 1-N, N-1, N-N, 1-1
- Mapping Entity Relationships
- Uni and Bi-directional Relationships
- The Relationship "inverse"
- Cascading Over Relationships
- Queries Across Relationships (Lazy and Eager)
- Inheritance Mapping
- Entity Inheritance with Hibernate
- Table-per-class mapping
- Table per Subclass mapping
- Table per Concrete Class mapping
- Additional Querying Capabilities
- Projection Queries, Aggregate queries
- Bulk updates and deletes
- Native SQL Queries
- Query Filters
- The Criteria API
- Overview of the Criteria API
- Working Querying with the Criteria API
- Query by Example
- Hibernate and Java Persistence / EJB 3
- Overview of Java Persistence / EJB 3
- Relationship between Java Persistence and Hibernate
- Overview of Annotations
- Mapping Entities with Hibernate Annotations
- The EntityManager, Persistence Context and Persistence Unit
- Working with Transactions - EntityTransaction, Managed, and Unmanaged Environments
- Inserts and Updates
- JPQL - Java Persistence Query Language
- Versioning
- Relationships
- Advanced Topics
- Components and Multi-Table Mapping
- equals() and hashCode()
- Caching and Efficiency
- Design Considerations
- Final Review
- Spring Framework See Details Close Section
- Overview
- Java EE: The Good, The Bad, and the Ugly
- Enter the Framework
- Spring Modules
- Controlling Object Creation
- Web Applications
- Persistence Support
- Aspect-Oriented Programming
- Integrating Other Frameworks
- Core Techniques
- Component-Based Software
- JavaBeans, Reconsidered
- The Factory Pattern
- Inversion of Control
- XML View: Declaring Beans
- Java View: Using Beans
- Singletons and Prototypes
- Initializing Bean State
- Dependency Injection
- Complex Systems
- Assembling Object Graphs
- Dependency Injection
- Single and Multiple Relationships
- The Utility Schema
- Autowiring
- Bean Aliases
- Order of Instantiation
- Validation
- Validators
- The Errors Object
- ValidationUtils
- Error Messages and Localization
- Nested Property Paths
- The Web Module
- Servlets and JSPs: What's Missing
- The MVC Pattern
- The Front Controller Pattern
- DispatcherServlet
- A Request/Response Cycle
- The Strategy Pattern
- JavaBeans as Web Components
- Web Application Contexts
- Handler Mappings
- "Creating" a Model
- View Resolvers
- Customizing Spring MVC
- HandlerMapping Options
- ViewResolver Options
- Chaining View Resolvers
- Triggering Redirects
- Controllers and Commands
- Working with Forms
- Command Objects
- The Template Method Pattern
- Command Controllers
- Data Binding
- MultiActionController
- Scope and Granularity of Command Objects
- Web Binding and Validation
- Property Editors
- Custom Property Editors
- Registrars
- Validating Form Input
- Form Controllers
- Form Controllers
- AbstractFormController
- SimpleFormController
- Spring Custom Tags
- <form:form> and Friends
- <form:errors>
- Reporting Errors
- Refining the Handling Cycle
- The Intercepting Filter Pattern
- Exception Handling
- Interceptors
- The Decorator Pattern
- Context and Lifecycle
- Awareness Interfaces
- Support and Utility Classes
- "Death By XML"
- The Persistence Tier
- The DAO Pattern
- The DaoSupport Hierarchy
- The DataAccessException Hierarchy
- JDBC DAOs
- JdbcTemplate and RowMapper
- Object/Relational Mapping
- Hibernate® DAOs
- Transaction Control
- AOP vs. Annotations
- Final Overview
- Java Web Services & SOA See Details Close Section
- Overview of SOA/Web Services
- SOA (Service Oriented Architecture) Overview
- Web Services Overview / Relationship to SOA
- Web services Architecture
- SOAP and WSDL Overview
- Introduction to Java Web Services
- Overview of Java Web Services
- JAX-WS and JSR-181
- Service definition with @WebService
- Creating a Web Service with JAX-WS
- WSDL - Web Services Description Language
- Introduction
- XML Namespace and XML Schema Overview
- WSDL Structure and Elements
- A WSDL Document
- Definition, Types, Messages, PortTypes, and Operations
- Bindings, Ports, and Services
- SOAP 1.1 Binding for WSDL
- SOAP - Simple Object Access Protocol
- Overview
- Message syntax
- Envelope/Header/Body
- Detailed Soap message structure
- SOAP Faults, Attachments
- SOAP Messaging and HTTP Binding
- SOAP Styles and Encoding
- JSR-181
- Overview
- @WebService, Modifying the Generated Service
- Other Annotations (@WebMethod, @SOAPBinding)
- The SEI (Service Endpoint Interface
- JAX-WS Capabilities
- Overview
- WSDL to Java Mapping
- Capabilities (XML Messaging, Handlers, SOAP/HTTP, Client Programming
- JAX-WS Clients
- Programming Model, Generating Classes from WSDL
- Writing a JAX-WS Client
- Dynamic Clients
- SAAJ
- Overview, SAAJ Message Structure and API
- Creating/Sending Messages
- DOM Overview
- Using DOM with SAAJ
- SOAP Handlers
- Overview and Processing
- Logical and Protocol Handlers
- Writing/Configuring a SOAP Protocol Handler
- Writing/Configuring a Logical Handler
- JAXB - Java Architecture for XML Binding
- Overview and Architecture
- JAXB and WSDL
- JAXB Annotations
- Start From WSDL / Start from WSDL & Java
- Starting From WSDL
- Binding Customizations
- Starting From WSDL and Java
- Bare XML Web Services
- XML Messaging Overview
- JAX-WS Providers
- A SOAP Provider and Source Provider
- XML Clients with Dispatch
- XML/HTTP Messaging with Provider
- Overview of REST and JAX-RS
- Security
- Java EE Security / Role Based Security
- Securing Web Services with BASIC Authentication
- Transport Security / HTTPS
- Securing Web Services with HTTPS
- WSS (WS-Security) Overview
- EJB-Based Web Services
- EJB Overview
- Programming EJB
- Creating/Configuring EJB-Based Web Services
- UDDI – Universal Description, Discovery, and Integration
- UDDI Overview and Capabilities
- JAXR - Java API for XML Registries
- JAXR Infomodel and Architecture
- Using the JAXR API
- WS-* Overview
- WS-Interoperability (WS-I)
- The WS-I Basic Profile
- WS-Addressing
- Final Overview
- Java Messaging Service (JMS) See Details Close Section
- Fundamentals
- Asynchronous Messaging
- The Java Message Service
- Point-to-Point Messaging
- Publish-and-Subscribe Messaging
- JNDI
- Connections and Sessions
- Working with Queues
- Working with Topics
- Expiration
- Message Content
- Message Types
- Header Fields
- Properties
- Message Selectors
- Reliability
- Message Persistence
- JMS from Web Applications
- The Component Environment
- Acknowledgement and Redelivery
- Acknowledgement Modes
- Session Recovery
- Transactions
- What JMS Transactions Are and Aren't
- Transaction Pitfalls
- Batch Processing
- Priority
- JMS and EJB: Message-Driven Beans
- JMS and Web Services: SOAP Messaging
- JMS with JBoss
- JBossMQ Overview
- JBossMQ Configuration
- JBossMQ Invokers
- Configuring Queues and Topics
- Conclusion
- Struts Framework See Details Close Section
- JSP & JSTL (JSP Standard Tag Library) See Details Close Section
- Java EE Introduction
- Java EE Overview
- Java EE Technologies
- Java EE Architecture
- MVC
- Servlets and JSP with JSP Standard Tag Library (JSTL)
- Web Application Basics
- How the Web works, Thin Clients, TCP/IP
- HTTP overview, Brief HTML review
- Overview of Java EE, servlets & Web applications.
- Servlet Basics
- Servlet API
- HTML Forms
- HTTP: Request-response, headers, GET, POST
- Overview: How Servlets Work
- Servlet Lifecycle: init(), service(), destroy()
- Requests and responses
- Core Servlet API: GenericServlet, ServletRequest, and ServletResponse
- HTTP Servlets: HttpServletRequest, HttpServletResponse and HttpServlet
- Accessing Parameters
- Additional Servlet Capabilities
- HTTP headers and MIME types
- RequestDispatcher: Including and forwarding
- Sharing data with the request object attributes
- Sharing data with ServletContext attributes
- Error Handling
- JavaServer Pages
- Basics and Overview
- JSP architecture
- JSP tags and JSP expressions
- Fixed Template Data
- Lifecycle of a JSP
- Model View Controller (MVC)
- Model 1/Model 2 Architecture
- Data Sharing among servlets & JSP
- Object scopes or "buckets"
- Request, application, session and page scope
- Predefined JSP implicit objects (request, session, application, page)
- <jsp:useBean>
- <jsp:getProperty>, <jsp:setProperty>
- <jsp:include>, <jsp:forward>
- Using Custom Tags
- Custom tags overview
- Reducing JSP complexity
- Tag Libraries
- Tag Library Descriptor (TLD)
- Loading a tag library in a web app
- The JSTL
- JSP Expression Language (EL)
- Using custom tags
- The c:url, c:param, c:forEach, c:out tags
- More JSP Capabilities and Session Management
- HTTP as a stateless protocol
- Hidden form fields
- Cookies: Overview, API, Using cookies
- Session overview: Cookies and session tracking
- HttpSession
- Putting data into a session object
- Retrieving data from a session object
- Using session data in servlets and JSPs
- Additional JSP Capabilities
- Exception handling and error pages
- Directives (page, include, others)
- Import declarations
- Multithreading considerations and data safety
- SingleThreadModel interface
- Additional JSP Capabilities
- JSP Directives
- JSP Error Pages
- JSP and Java
- Declarations, Scriptlet overview, Scriptlet syntax
- More JSTL
- Core JSTL design principles
- The JSTL Expression Language
- Naming conventions for JSTL actions
- Scoped variables versus scripting variables
- Understanding JSTL expression language (EL)
- Overview of EL
- Expressions
- Identifiers
- Operators
- Type coercion
- Literal values
- Implicit objects
- Method invocation
- EL expressions in custom actions
- Common mistakes
- General-purpose and conditional actions
- General purpose actions with c:out, c:set, c:remote, and c:catch
- Conditional actions
- Using conditional and general-purpose actions together
- Iteration actions
- The c:forEach action
- The c:forTokens action
- Iteration status
- Custom iteration actions
- Expressions, Type Coercion, Operators, String concatenation, Implicit Objects
- Overview of JSTL libraries
- The Core JSTL Library
- General Purpose: c:out, c:set, c:catch
- Conditional: c:if, c:choose,
- Overview of other capabilities
- Additional Topics
- Servlet Filter overview
- Filtering examples, lifecycle, & filter chains
- Filter API, Modifying a request, Modifying a response
- Struts Overview
- Advanced MVC – Struts overview
- Command and State patterns
- Struts View and Controller elements
- JDBC
- Introduction
- Relational Database and JDBC Overview
- Overview, Table Relationships, Web Based Data Access, JDBC Characteristics
- JDBC Architecture, JDBC API Overview
- DriverManager, JDBC Drivers
- Naming databases with JDBC URLs
- Connecting to a database
- Connection interface, Establishing a connection
- DataBaseMetaData
- Handling Database Exceptions
- Data Access
- DAO – Data Access Objects, O-R Mapping, Value Objects
- Processing Database Data
- Executing statements, precompiled statements and stored procedures
- Processing ResultSets,
- Dealing with Null data
- Updating, inserting, retrieving data
- Controlling Transactions
- JDBC Driver Types
- DataSource
- Java EE and DataSource, Using JNDI
- Connection Pooling
- Overview, Usage, Advantages
- Advanced Topics
- Other Database Access Technologies
- SQLJ, O-R Mapping Tools, JDO (Java Data Objects), EJB Entity Beans
- Advanced JDBC Features
- Batch Updates, Scrollable Result Sets, Rowsets, User Defined Types, BLOBS, CLOBS
|