Book Image

Jakarta EE Application Development - Second Edition

By : David R. Heffelfinger
Book Image

Jakarta EE Application Development - Second Edition

By: David R. Heffelfinger

Overview of this book

Jakarta EE stands as a robust standard with multiple implementations, presenting developers with a versatile toolkit for building enterprise applications. However, despite the advantages of enterprise application development, vendor lock-in remains a concern for many developers, limiting flexibility and interoperability across diverse environments. This Jakarta EE application development guide addresses the challenge of vendor lock-in by offering comprehensive coverage of the major Jakarta EE APIs and goes beyond the basics to help you develop applications deployable on any Jakarta EE compliant runtime. This book introduces you to JSON Processing and JSON Binding and shows you how the Model API and the Streaming API are used to process JSON data. You’ll then explore additional Jakarta EE APIs, such as WebSocket and Messaging, for loosely coupled, asynchronous communication and discover ways to secure applications with the Jakarta EE Security API. Finally, you'll learn about Jakarta RESTful web service development and techniques to develop cloud-ready microservices in Jakarta EE. By the end of this book, you'll have developed the skills to craft secure, scalable, and cloud-native microservices that solve modern enterprise challenges.
Table of Contents (18 chapters)
15
Chapter 15: Putting it All Together

CDI events

CDI provides event-handling facilities. Events allow loosely coupled communication between different CDI beans. A CDI bean can fire an event, then one or more event listeners handle the event.

Firing CDI events

The following example is a new version of the CustomerInfoController class we discussed in the previous section. The class has been modified to fire an event every time the user navigates to a new page:

package com.ensode.jakartaeebook.cdievents.controller;
import jakarta.enterprise.context.Conversation;
import jakarta.enterprise.context.RequestScoped;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import java.io.Serializable;
import com.ensode.jakartaeebook.cdievents.event.NavigationInfo;
import com.ensode.jakartaeebook.cdievents.model.Customer;
import jakarta.enterprise.event.Event;
@Named
@RequestScoped
public class CustomerInfoController implements Serializable {
    @Inject
    private Conversation...