The quickstarts demonstrate Jakarta EE 10 and a few additional technologies from the WildFly Application Server stack. They provide small, specific, working examples that can be used as a reference for your own project.

1. Introduction

These quickstarts run on the WildFly application server. The quickstarts are configured to use the correct Maven dependencies and ensure that you test and compile the quickstarts against the correct runtime environment.

Each quickstart folder contains a README-source.adoc file that describes the quickstart features and provides instructions about how to build and run it. Instructions are provided to build the more readable README.html files.

Make sure you read this entire document before you attempt to work with the quickstarts.

2. System Requirements

The applications these projects produce are designed to be run on WildFly Application Server 33 or later.

All you need to build these projects is Java 11.0 (Java SDK 11) or later and Maven 3.6.0 or later.

3. Use of WILDFLY_HOME and QUICKSTART_HOME Variables

The quickstart README files use the replaceable value WILDFLY_HOME to denote the path to the WildFly server. When you encounter this value in a README file, make sure you replace it with the actual path to your WildFly server.

When you see the replaceable variable QUICKSTART_HOME, replace it with the path to the root directory of all of the quickstarts.

4. Suggested Approach to the Quickstarts

We recommend that you approach the quickstarts as follows:

  • Regardless of your level of expertise, we suggest you start with the helloworld quickstart. It is the simplest example and is an easy way to prove the server is configured and running correctly.

  • If you are a beginner or new to JBoss, start with the quickstarts labeled Beginner, then try those marked as Intermediate. When you are comfortable with those, move on to the Advanced quickstarts.

  • Some quickstarts are based upon other quickstarts but have expanded capabilities and functionality. If a prerequisite quickstart is listed, make sure you deploy and test it before looking at the expanded version.

The root folder of each individual quickstart contains a README.html file with detailed instructions on how to build and run the example.

5. Table of Available Quickstarts

The sources for all available quickstarts, which are listed in the following table, can be found here: https://github.com/wildfly/quickstart/.

Each quickstart provides the list of technologies demonstrated by the quickstart and the required experience level needed to build and deploy it. Click on the quickstart link in the table to see more detailed information about how to run it. Some quickstarts require deployment of other quickstarts. This information is noted in the Prerequisites section of the quickstart README.html file.

Note
Some of these quickstarts use the H2 database included with WildFly Application Server 33. It is a lightweight, relational example datasource that is used for examples only. It is not robust or scalable, is not supported, and should NOT be used in a production environment!
Quickstart Name Demonstrated Technologies Description Experience Level Required Prerequisites

batch-processing

CDI, Batch 1.0, JSF

The batch-processing quickstart shows how to use chunk oriented batch jobs to import a file to a database.

Intermediate

none

bmt

EJB, BMT

The bmt quickstart demonstrates Bean-Managed Transactions (BMT), showing how to manually manage transaction demarcation while accessing JPA entities.

Intermediate

none

cmt

EJB, CMT, JMS

The cmt quickstart demonstrates Container-Managed Transactions (CMT), showing how to use transactions managed by the container.

Intermediate

none

ee-security

EE Security, Servlet, CDI

The ee-security quickstart demonstrates Jakarta EE security.

Intermediate

none

ejb-multi-server

EJB, EAR

The ejb-multi-server quickstart shows how to communicate between multiple applications deployed to different servers using an EJB to log the invocation.

Advanced

none

ejb-remote

EJB, JNDI

The ejb-remote quickstart uses EJB and JNDI to demonstrate how to access an EJB, deployed to WildFly, from a remote Java client application.

Intermediate

none

ejb-security-context-propagation

EJB, Security

The ejb-security-context-propagation quickstart demonstrates how the security context can be propagated to a remote EJB using a remote outbound connection configuration

Advanced

none

ejb-security-programmatic-auth

EJB, Security

The ejb-security-programmatic-auth quickstart demonstrates how to programmatically setup different identities when invoking a remote secured EJB.

Intermediate

none

ejb-throws-exception

EJB, EAR

The ejb-throws-exception quickstart demonstrates how to throw and handle exceptions across JARs in an EAR.

Intermediate

none

ejb-timer

EJB Timer

The ejb-timer quickstart demonstrates how to use the Jakarta Enterprise Bean timer service @Schedule and @Timeout annotations with WildFly.

Beginner

none

ejb-txn-remote-call

EJB, JTA, Clustering

The ejb-txn-remote-call quickstart demonstrates remote transactional EJB calls over two application servers of WildFly.

Intermediate

none

ha-singleton-deployment

EJB, Singleton Deployments, Clustering

The ha-singleton-deployment quickstart demonstrates the recommended way to deploy any service packaged in an application archive as a cluster-wide singleton.

Advanced

none

ha-singleton-service

JBoss MSC, Singleton Service, Clustering

The ha-singleton-service quickstart demonstrates how to deploy a cluster-wide singleton JBoss MSC service.

Advanced

none

helloworld

Servlet

The helloworld quickstart demonstrates the use of Servlet 6 and is a good starting point to verify WildFly is configured correctly.

Beginner

none

helloworld-jms

JMS

The helloworld-jms quickstart demonstrates the use of external JMS clients with WildFly.

Intermediate

none

helloworld-mdb

JMS, EJB, MDB

The helloworld-mdb quickstart uses JMS and EJB Message-Driven Bean (MDB) to create and deploy JMS topic and queue resources in WildFly.

Intermediate

none

helloworld-mutual-ssl

Mutual TLS, Undertow

The helloworld-mutual-ssl quickstart is a basic example that demonstrates mutual TLS configuration in WildFly

Intermediate

none

helloworld-mutual-ssl-secured

Mutual TLS, Security, Undertow

The helloworld-mutual-ssl-secured quickstart demonstrates securing a Web application using client certificate authentication with authorization

Intermediate

none

helloworld-singleton

EJB, Singleton

The helloworld-singleton quickstart demonstrates an EJB Singleton Bean that is instantiated once and maintains state for the life of the session.

Beginner

none

helloworld-ws

JAX-WS

The helloworld-ws quickstart demonstrates a simple Hello World application, bundled and deployed as a WAR, that uses JAX-WS to say Hello.

Beginner

none

hibernate

Hibernate

The hibernate quickstart demonstrates how to use Hibernate ORM 6 over Persistence, using Bean Validation, and Enterprise Beans.

Intermediate

none

http-custom-mechanism

EJB, Security

The http-custom-mechanism quickstart demonstrates how to implement a custom HTTP authentication mechanism that can be registered with Elytron.

Intermediate

none

jaxrs-client

JAX-RS

The jaxrs-client quickstart demonstrates Jakarta REST Client API, which interacts with a Jakarta REST Web service that runs on WildFly.

Beginner

none

jaxrs-jwt

JAX-RS, Security

The jaxrs-jwt quickstart demonstrates a Jakarta REST secured application using JSON Web Tokens (JWT) with Elytron.

Intermediate

none

jaxws-ejb

JAX-WS

The jaxws-ejb quickstart is a working example of the web service endpoint created from an EJB.

Beginner

none

jaxws-retail

JAX-WS

The jaxws-retail quickstart is a working example of a simple web service endpoint.

Beginner

none

jsonp

CDI, JSF, JSON-P

The jsonp quickstart demonstrates how to use the JSON-P API to produce object-based structures and then parse and consume them as stream-based JSON strings.

Beginner

none

jta-crash-rec

JTA, Crash Recovery

The jta-crash-rec quickstart uses JTA and Byteman to show how to code distributed (XA) transactions in order to preserve ACID properties on server crash.

Advanced

none

jts

JTS, EJB, JMS

The jts quickstart shows how to use JTS to perform distributed transactions across multiple containers, fulfilling the properties of an ACID transaction.

Intermediate

cmt

kitchensink

CDI, JSF, JPA, EJB, JAX-RS, BV

The kitchensink quickstart demonstrates a localized Jakarta EE 10 web-enabled database application using JSF, CDI, EJB, JPA, and Bean Validation.

Intermediate

none

logging

Logging

The logging quickstart demonstrates how to configure different logging levels in WildFly.

Intermediate

none

mail

JavaMail, CDI, JSF

The mail quickstart demonstrates how to send and receive emails using CDI and JSF and with custom Mail provider configured in WildFly.

Beginner

none

messaging-clustering-singleton

JMS, MDB, Clustering

The messaging-clustering-singleton quickstart uses a JMS topic and a queue to demonstrate clustering using WildFly messaging with MDB singleton configuration where only one node in the cluster will be active.

Advanced

none

micrometer

Micrometer

The micrometer quickstart demonstrates the use of the Micrometer library in WildFly.

Beginner

none

microprofile-config

MicroProfile Config

The microprofile-config quickstart demonstrates the use of the MicroProfile Config specification in WildFly.

Beginner

none

microprofile-fault-tolerance

MicroProfile, Fault Tolerance

The microprofile-fault-tolerance quickstart demonstrates how to use Eclipse MicroProfile Fault Tolerance in WildFly.

Intermediate

none

microprofile-health

MicroProfile Health

The microprofile-health quickstart demonstrates the use of the MicroProfile Health specification in WildFly.

Beginner

none

microprofile-jwt

JWT, Security, MicroProfile

The microprofile-jwt quickstart demonstrates the use of the MicroProfile JWT specification in WildFly.

Intermediate

none

microprofile-lra

MicroProfile LRA

The microprofile-lra quickstart demonstrates the use of the MicroProfile LRA specification in WildFly.

Beginner

none

microprofile-openapi

MicroProfile OpenAPI

This guide demonstrate how to use the MicroProfile OpenAPI functionality in WildFly to expose an OpenAPI document for a simple REST application.

Beginner

none

microprofile-reactive-messaging-kafka

MicroProfile Reactive Messaging

The microprofile-reactive-messaging-kafka quickstart demonstrates the use of the MicroProfile Reactive Messaging specification backed by Apache Kafka in WildFly.

Beginner

none

microprofile-rest-client

MicroProfile REST Client

The microprofile-rest-client quickstart demonstrates the use of the MicroProfile REST Client specification in WildFly.

Beginner

none

numberguess

CDI, JSF

The numberguess quickstart demonstrates the use of CDI (Contexts and Dependency Injection) and JSF (JavaServer Faces) in WildFly.

Beginner

none

opentelemetry-tracing

OpenTelemetry Tracing

The opentelemetry-tracing quickstart demonstrates the use of the OpenTelemetry tracing specification in WildFly.

Beginner

none

remote-helloworld-mdb

JMS, EJB, MDB

The remote-helloworld-mdb quickstart demonstrates the use of JMS and EJB Message-Driven Bean in WildFly with a remote broker.

Intermediate

none

security-domain-to-domain

Servlet, EJB, Security

The security-domain-to-domain quickstart demonstrates the propagation of an identity across two different deployments using different security domains.

Advanced

none

servlet-async

Asynchronous Servlet, CDI, EJB

The servlet-async quickstart demonstrates how to use asynchronous servlets to detach long-running tasks and free up the request processing thread.

Intermediate

none

servlet-filterlistener

Servlet Filter, Servlet Listener

The servlet-filterlistener quickstart demonstrates how to use Servlet filters and listeners in an application.

Intermediate

none

servlet-security

Servlet, Security

The servlet-security quickstart demonstrates the use of Jakarta EE declarative security to control access to Servlets and Security in WildFly.

Intermediate

none

spring-resteasy

Resteasy, Spring

The spring-resteasy quickstart demonstrates how to package and deploy a web application that includes resteasy-spring integration.

Beginner

none

tasks-jsf

JSF, JPA

The tasks-jsf quickstart demonstrates how to use JPA persistence with JSF as the view layer.

Intermediate

none

temperature-converter

CDI, JSF, SLSB EJB

The temperature-converter quickstart does temperature conversion using an EJB Stateless Session Bean (SLSB), CDI, and a JSF front-end client.

Beginner

none

thread-racing

Batch, CDI, EE Concurrency, JAX-RS, JMS, JPA, JSON, Web Sockets

A thread racing web application that demonstrates technologies introduced or updated in the latest Jakarta EE specification.

Beginner

none

todo-backend

JPA, JAX-RS, OpenShift, Galleon

The todo-backend quickstart demonstrates how to implement a backend that exposes a HTTP API with JAX-RS

Intermediate

none

websocket-endpoint

CDI, WebSocket, JSON-P

Shows how to use WebSockets with JSON to broadcast information to all open WebSocket sessions in WildFly.

Beginner

none

websocket-hello

WebSocket, CDI, JSF

The websocket-hello quickstart demonstrates how to create a simple WebSocket application.

Beginner

none