Detailed Course Outline
Java Platform, Enterprise Edition
- The Java EE Platform
- The needs of enterprise application developers
- Java EE specifications
- A comparison of services and libraries
- Java EE application tiers and architecture
Enterprise Development Tools and Applications
- The purpose of an application server
- Properties of Java EE components
- The development process of Java EE applications
- Configuring and deploying Java EE applications
Java Beans, Annotations and Logging
- Java SE features in Java EE applications
- Creating POJO JavaBeans components
- Using logging
- Using common Java annotations
- Developing custom annotations
- The role of annotations in Java EE applications
XML Programming with JAXB
- The benefits of XML
- XML namespaces and schemas
- Java XML APIs
- The Java XML Binding API (JAXB)
- Reading and writing XML documents with JAXB
- xjc: the JAXB binding compiler
- JAXB annotations
SOAP Web Services with JAX-WS
- Overview of SOAP
- Overview of WSDL files
- Comparing WSDL-first and code-first design approaches
- Writing a JAX-WS web service
- Generating WSDL from a Java class
- Creating JAX-WS web service clients
Java Naming and Directory (JNDI) Services
- What is JNDI?
- Naming service concepts
- Directory service concepts
- JNDI packages
- Using JNDI to look up JDBC and EJB components in Java EE
The EJB Component Model
- The role EJB components play in Java EE appplications
- The role of the EJB container
- EJB changes in Java EE 7
- Local, distributed and no-client EJB client access views
- EJB Session types
- Stateless, Stateful and Singleton EJBs
- Session bean packaging and deploying
Contexts and Dependency Injection
- What is dependency injection?
- Using Qualifiers
- The beans.xml file and Alternatives
- Using Producers and Disposers
- Using Interceptors
- Using Events and Stereotypes
Java Message Service
- What is the Java Message Service?
- Why do we need JMS?
- JMS Overview
- Point-to-point messaging architecture
- Publish/subscribe messaging architecture
- Message producers and consumers
- Queues and topics
- Durable vs. non-durable subscriptions
Message-driven Beans
- The life cycle of a message-driven bean
- Creating a message-driven bean
- Creating life cycle handlers for message-driven beans
- Configuring a message-driven bean
Java EE Concurrency
- Concurrency in Java EE
- Asynchronous EJBs
- Managed Executors
JDBC in Java EE Environments
- Overview of the JDBC API
- Using CDI to inject a JDBC resource in a Java EE component
- The Data Access Object pattern
Transactions in Java EE Environments
- What are transaction semantics?
- Comparing programmatic and declarative transaction scoping
- Using JTA to scope transactions programmatically
- Implementing a container-managed transaction policy using declarations
- Controlling container-managed transaction propagation
Java Persistence API
- Object-relational mapping
- Entities and the entity manager
- Persistence contexts and persistence units
- Create, read, update and delete operations with JPA
- Create typed queries in JPA with JPQL
Bean Validation with JPA
- What is Bean Validation?
- JPA lifecycle phases where validation takes place
- Using the built-in validation constraints
- Creating a custom bean validation constraint
- Programmatic validation by injecting a Validator
- Using validation groups
Timer and Batch Services
- What are timer services?
- Programmatic and automatic timers
- What is Batch processing?
- Jobs, steps and chunks
- Batch examples
Security
- Authentication, authorization and confidentiality
- Apply Java EE security using deployment descriptors
- Creating users and groups and mapping them to roles
- Defining possible web service attack vectors