Getting started with developing applications for JBoss EAP deployment
Get started creating applications for JBoss EAP deployment.
Abstract
Providing feedback on JBoss EAP documentation Copy linkLink copied to clipboard!
To report an error or to improve our documentation, log in to your Red Hat Jira account and submit an issue. If you do not have a Red Hat Jira account, then you will be prompted to create an account.
Procedure
- Click the following link to create a ticket.
- Enter a brief description of the issue in the Summary.
- Provide a detailed description of the issue or enhancement in the Description. Include a URL to where the issue occurs in the documentation.
- Clicking Submit creates and routes the issue to the appropriate documentation team.
Making open source more inclusive Copy linkLink copied to clipboard!
Red Hat is committed to replacing problematic language in our code, documentation, and web properties. We are beginning with these four terms: master, slave, blacklist, and whitelist. Because of the enormity of this endeavor, these changes will be implemented gradually over several upcoming releases. For more details, see our CTO Chris Wright’s message.
The best way to become familiar with a new programming language or a technology is to create a "Hello World" application. You can create a "Hello World" application for JBoss EAP by using Maven as the project management tool.
To create a Hello World application, deploy it and test the deployment, follow these procedures:
- Bare metal deployment
- OpenShift Container Platform deployment
Chapter 1. Creating a Maven project for a hello world application Copy linkLink copied to clipboard!
A Maven project contains a pom.xml configuration file and has the directory structure required for creating an application. You can configure the pom.xml configuration file to add dependencies for your application.
To create a Maven project for a hello world application, follow these procedures:
1.1. Creating a Maven project with maven-archetype-webapp Copy linkLink copied to clipboard!
Use the maven-archetype-webapp archetype to create a Maven project for building applications for JBoss EAP deployment. Maven provides different archetypes for creating projects based on templates specific to project types. The maven-archetype-webapp creates a project with the structure required to develop simple web-applications.
Prerequisites
- You have installed Maven. For more information, see Downloading Apache Maven.
Procedure
Set up a Maven project by using the
mvncommand. The command creates the directory structure for the project and thepom.xmlconfiguration file.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Navigate to the generated directory.
cd helloworld
$ cd helloworldCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Open the generated
pom.xmlconfiguration file in a text editor. Remove the content inside the
<project>section ofpom.xmlconfiguration file after the<name>helloworld Maven Webapp</name>line.Ensure that the file looks like this:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow The content was removed because it is not required for the application.
1.2. Defining properties in a Maven project Copy linkLink copied to clipboard!
You can define properties in a Maven pom.xml configuration file as place holders for values. Define the value for JBoss EAP server as a property to use the value consistently in the configuration.
Prerequisites
You have initialized a Maven project.
For more informartion, see Initializing a Maven project for a JBoss EAP hello world application.
Procedure
Define a property
<version.server>as the JBoss EAP version on which you will deploy the configured application.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. Defining the repositories in a Maven project Copy linkLink copied to clipboard!
Define the artifact and plug-in repositories in which Maven looks for artifacts and plug-ins to download.
Prerequisites
You have initialized a Maven project.
For more informartion, see Initializing a Maven project for a JBoss EAP hello world application.
Procedure
Define the artifacts repository.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Define the plug-ins repository.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. Importing the JBoss EAP BOMs as dependency management in a Maven project Copy linkLink copied to clipboard!
Import the JBoss EAP EE With Tools Bill of materials (BOM) to control the versions of runtime Maven dependencies. When you specify a BOM in the <dependencyManagement> section, you do not need to individually specify the versions of the Maven dependencies defined in the provided scope.
Prerequisites
You have initialized a Maven project.
For more informartion, see Initializing a Maven project for a JBoss EAP hello world application.
Procedure
Add a property for the BOM version in the properties section of the
pom.xmlconfiguration file.<properties> .... <version.bom.ee>${version.server}</version.bom.ee> </properties><properties> .... <version.bom.ee>${version.server}</version.bom.ee> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow The value defined in the property
<version.server>is used as the value for BOM version.Import the JBoss EAP BOMs dependency management.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.5. Adding plug-in management in a Maven project Copy linkLink copied to clipboard!
Add Maven plug-in management section to the pom.xml configuration file to get plug-ins required for Maven CLI commands.
Prerequisites
You have initialized a Maven project.
For more informartion, see Initializing a Maven project for a JBoss EAP hello world application.
Procedure
Define the versions for
wildfly-maven-pluginandmaven-war-plugin, in the<properties>section.<properties> ... <version.plugin.wildfly>4.1.1.Final</version.plugin.wildfly> <version.plugin.war>3.3.2</version.plugin.war> </properties><properties> ... <version.plugin.wildfly>4.1.1.Final</version.plugin.wildfly> <version.plugin.war>3.3.2</version.plugin.war> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Add
<pluginManagement>in<build>section inside the<project>section.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.6. Verifying a maven project Copy linkLink copied to clipboard!
Verify that the Maven project you configured builds.
Prerequisites
You have defined Maven properties.
For more information, see Defining properties in a Maven project.
You have defined Maven repositories.
For more information, see Defining the repositories in a Maven project.
You have imported the JBoss EAP Bill of materials (BOMs) as dependency management.
For more information, see Importing the JBoss EAP BOMs as dependency management in a Maven project.
You have added plug-in management.
For more information, see Adding plugin management in Maven project for a server hello world application.
Procedure
Install the Maven dependencies added in the
pom.xmllocally.mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow You get an output similar to the following:
... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ...
... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Chapter 2. Creating a hello world servlet Copy linkLink copied to clipboard!
Create a servlet that returns "Hello world!" when accessed.
In this procedure, <application_home> refers to the directory that contains the pom.xml configuration file for the application.
Prerequisites
You have created a Maven project.
For more information, see Creating a Maven project for a Hello World application.
Procedure
Add the required dependency to
pom.xmlconfiguration file after the<dependencyManagement>section.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
jakarta.servlet-apidependency provides Jakarta Servlet API.- 2
- Define the scope as
providedso that the dependency is not included in the application. The reason for not including the dependency in the application is that this dependency is managed by thejboss-eap-ee-with-toolsBOM and such dependencies are are included with JBoss EAP.
NoteThe dependency is defined without a version because
jboss-eap-ee-with-toolsBOM was imported in the<dependencyManagement>section.- Navigate to the <application_home> directory.
Create a directory to store the Java files.
mkdir -p src/main/java/org/jboss/as/quickstarts/helloworld
$ mkdir -p src/main/java/org/jboss/as/quickstarts/helloworldCopy to Clipboard Copied! Toggle word wrap Toggle overflow Navigate to the new directory.
cd src/main/java/org/jboss/as/quickstarts/helloworld
$ cd src/main/java/org/jboss/as/quickstarts/helloworldCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create the Servlet
HelloWorldServlet.javathat returns "Hello World!".Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The
@WebServlet("/HelloWorld")annotation provides the following information to JBoss EAP:- This class is a servlet.
Make the servlet available at the URL "<application_URL>/HelloWorld".
For example, if JBoss EAP is running on the localhost and is available at the default HTTP port, 8080, the URL is
http://localhost:8080/helloworld/HelloWorld.
Navigate to the <application_home>/src/main/webapp directory.
You find the file "index.jsp" that Maven created. This file prints "Hello World!" when you access the application.
Update the "index.jsp" file to redirect to the Hello World servlet by replacing its content with the following content:
<html> <head> <meta http-equiv="Refresh" content="0; URL=HelloWorld"> </head> </html><html> <head> <meta http-equiv="Refresh" content="0; URL=HelloWorld"> </head> </html>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Navigate to the <application_home> directory.
Compile and package the application as a web archive (WAR) with the following command:
mvn package
$ mvn packageCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ...
... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Chapter 3. Deploying an application to the server Copy linkLink copied to clipboard!
You can deploy your application on a JBoss EAP server running on bare metal or on OpenShift Container Platform.
To deploy your application on a JBoss EAP server running on bare metal, follow this procedure:
To deploy your application on a JBoss EAP server running on OpenShift Container Platform, follow these procedures:
3.1. Deploying an application to a bare metal installation Copy linkLink copied to clipboard!
You can deploy an application to JBoss EAP by using the JBoss EAP deploy plug-in.
Prerequisites
You have created an application.
For more information, see Creating a hello world servlet.
- JBoss EAP is running.
Procedure
Navigate to the application root directory.
The application root directory contains the
pom.xmlconfiguration file.Add the following build configuration to the
pom.xmlconfiguration file in the<project>section to define the application archive filename.<build> ... <finalName>${project.artifactId}</finalName> </build><build> ... <finalName>${project.artifactId}</finalName>1 </build>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Set the name of the deployment to the project’s artifact ID.
Build and deploy the application by using the JBoss EAP deploy plug-in.
mvn package wildfly:deploy
$ mvn package wildfly:deployCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification
Navigate to the address
http://localhost:8080/helloworld/in a browser.You are redirected to http://localhost:8080/helloworld/HelloWorld and you get the following message:
Hello World!
Hello World!Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. Deploying an application to OpenShift Container Platform Copy linkLink copied to clipboard!
You can use the source-to-image (S2I) workflow to deploy your applications to JBoss EAP on OpenShift Container Platform. The S2I workflow takes source code from a Git repository and injects it into a container that’s based on the language and framework you want to use. After the S2I workflow is completed, the src code is compiled, the application is packaged and is deployed to the JBoss EAP server.
3.2.1. Preparing an application for deployment on OpenShift Container Platform Copy linkLink copied to clipboard!
OpenShift Container Platform uses application hosted on a Git repository. To deploy your application on OpenShift, you must first push your application to a Git repository. After that, you can use JBoss EAP helm chart to configure your application deployment.
Prerequisites
You have created an application.
For more information, see Creating a Hello World servlet.
- You have created a Git repository.
Procedure
Move the application to your local Git repository, if it already is not in it.
mv -r helloworld/ <your_git_repo>
$ mv -r helloworld/ <your_git_repo>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Define the following property in the
pom.xmlconfiguration file:<properties> ... <version.plugin.eap>1.0.0.Final-redhat-00013</version.plugin.eap> </properties><properties> ... <version.plugin.eap>1.0.0.Final-redhat-00013</version.plugin.eap>1 </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<version.plugin.eap>defines the version for JBoss EAP Maven plug-in.
Add the JBoss EAP maven plugin to
<pluginManagement>, in<build>section inside the<project>section.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create a profile "openshift" in the
pom.xmlconfiguration file.This profile defines the plug-ins, feature packs, and layers required for deployment on OpenShift Container Platform.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
wildfly-maven-pluginis a JBoss EAP plug-in for provisioning a JBoss EAP instance, with the application deployed, on OpenShift Container Platform.- 2
feature-packsdefines the feature-packs (zipped files that contains features to dynamically provision a server). In this case we need the feature-packsorg.wildfly:wildfly-galleon-packandorg.wildfly.cloud:wildfly-cloud-galleon-pack.- 3
layersdefines the layers (from the configured feature-packs) to include in the provisioned server. Each layer identifies one or more server capabilities that can be installed on its own, or in combination with other layers. In our case we opt for thecloud-serverlayer, which provisions just the basic features of JBoss EAP, well suited for a cloud server.- 4
<name>ROOT.war</name>: Defines the resulting name of the application’s web archive (WAR). IfROOT.waris specified then the application is deployed at the root path of the server, otherwise it is deployed at<name/>relative path.
Verify that the applications compiles.
mvn package -Popenshift
$ mvn package -PopenshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Push the changes to your repository.
3.2.2. Deploying an application to JBoss EAP on OpenShift with Helm Copy linkLink copied to clipboard!
Use the JBoss EAP Helm chart to configure and deploy application to JBoss EAP on OpenShift with Helm.
Prerequisites
You have prepared your application for deployment on OpenShift Container Platform.
For more information, see Preparing an application for deployment on OpenShift Container Platform.
You have created a project in OpenShift Container Platform.
For more information see Working with projects.
You have installed OpenShift CLI (
oc)For more information, see Installing the OpenShift CLI.
You are logged in to OpenShift Container Platform from your machine.
For more information, see Logging in to the OpenShift CLI.
You have installed helm.
For more information, see Installing Helm.
Procedure
Create a directory called
chartsin the application root directoy and navigate to it. Application root directory is the one that containspom.xmlconfiguration file.mkdir charts; cd charts
$ mkdir charts; cd chartsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create a file
helm.yamlwith the following content:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Configure the JBoss EAP repository in Helm.
If you haven’t added the JBoss EAP repository to Helm before, add it.
helm repo add jboss-eap https://jbossas.github.io/eap-charts/
$ helm repo add jboss-eap https://jbossas.github.io/eap-charts/Copy to Clipboard Copied! Toggle word wrap Toggle overflow If you already have added the JBoss EAP repository to Helm, update it.
helm repo update jboss-eap
$ helm repo update jboss-eapCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Deploy the application using helm.
helm install helloworld -f helm.yaml jboss-eap/eap8
$ helm install helloworld -f helm.yaml jboss-eap/eap8Copy to Clipboard Copied! Toggle word wrap Toggle overflow The deployment can take a few minutes to complete.
Verification
Get the URL of the route to the deployment.
APPLICATION_URL=https://$(oc get route helloworld --template='{{ .spec.host }}') &&$ APPLICATION_URL=https://$(oc get route helloworld --template='{{ .spec.host }}') && echo "" && echo "Application URL: $APPLICATION_URL"Copy to Clipboard Copied! Toggle word wrap Toggle overflow Navigate to the "Application URL" in a browser.
You are redirected to the servlet at path "/HelloWorld" and you get the following message:
Hello World!
Hello World!Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Chapter 4. Testing an application deployed on JBoss EAP Copy linkLink copied to clipboard!
To ensure that the Hello World application deployed on JBoss EAP is working, you can add integration tests.
To add tests for an application deployed on a JBoss EAP server running on bare metal, follow these procedures:
To add tests for an application deployed on a JBoss EAP server running on OpenShift Container Platform, follow these procedures:
4.1. Adding the Maven dependencies and profile required for integration tests Copy linkLink copied to clipboard!
To create integration tests for your applications, add the required Maven dependencies.
Prerequisites
You have created a Maven project.
For more information, see Creating a Maven project for a hello world application.
Procedure
Define the following properties in the
pom.xmlconfiguration file:<properties> ... <version.plugin.failsafe>3.2.2</version.plugin.failsafe> </properties><properties> ... <version.plugin.failsafe>3.2.2</version.plugin.failsafe> </properties>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Add the dependency required for tests.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Define a profile to add the plug-ins required for integration tests.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2. Creating a test class to test an application Copy linkLink copied to clipboard!
Create an integration test that verifies that the application is deployed and running on JBoss EAP on OpenShift Container Platform, by checking that the HTTP GET of its web page returns 200 OK.
In this procedure, <application_home> refers to the directory that contains the pom.xml configuration file for the application.
Prerequisites
You have deployed your application to JBoss EAP.
For more information, see Building and deploying an application to the server.
You have added the Maven dependencies required for JUnit tests.
For more information, see Adding the Maven dependencies and profile required for integration tests.
Procedure
- Navigate to the <application_home> directory.
Create a directory to store the test class.
mkdir -p src/test/java/org/jboss/as/quickstarts/helloworld
$ mkdir -p src/test/java/org/jboss/as/quickstarts/helloworldCopy to Clipboard Copied! Toggle word wrap Toggle overflow Navigate to the new directory.
cd src/test/java/org/jboss/as/quickstarts/helloworld
$ cd src/test/java/org/jboss/as/quickstarts/helloworldCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create a Java class
HelloWorldServletIT.javathat tests the deployment.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- The URL at which the application is running. This value is used if
sever.hostis undefined. - 2
- Create an HttpRequest instance for the application URI.
- 3
- Create an HttpClient to send requests to and receive response from the application.
- 4
- Get response from the application.
- 5
- Test that the response revieved from the application is "200" indicating that the application is rechable.
4.3. Testing an application deployed on JBoss EAP that is running on bare metal Copy linkLink copied to clipboard!
Test the application deployed on JBoss EAP that is running on bare metal.
Prerequisites
You have created a test class.
For more information, see Creating a test class to test an application
- The application to test is deployed on JBoss EAP.
- JBoss EAP is running.
Procedure
- Navigate to the <application_home> directory.
Run the integration test by using the
verifycommand with theintegration-testingprofile.mvn verify -Pintegration-testing
$ mvn verify -Pintegration-testingCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4. Testing an application deployed to JBoss EAP on OpenShift Container Platform Copy linkLink copied to clipboard!
Test the application deployed to JBoss EAP on OpenShift Container Platform.
Prerequisites
You have created a test class.
For more information, see Creating a test class to test an application
Procedure
- Push the changes to your Git repository.
- Navigate to the <application_home> directory.
Run the test by using the
verifycommand, activating theintegration-testingprofile and specifying the URL to the application.mvn verify -Pintegration-testing -Dserver.host=https://$(oc get route helloworld --template='{{ .spec.host }}')$ mvn verify -Pintegration-testing -Dserver.host=https://$(oc get route helloworld --template='{{ .spec.host }}')Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteThe tests use SSL/TLS to connect to the deployed application. Therefore, you need the certificates to be trusted by the machine the tests are run from.
To trust the certificates, you must add it to a Java trust store.
Example
keytool -trustcacerts -keystore _<path-to-java-truststore>_ -storepass _<trust-store-password>_ -importcert -alias _<alias-for-the-certificate>_ -file _<path-to-certificate>_/_<certificate-name>_
$ keytool -trustcacerts -keystore _<path-to-java-truststore>_ -storepass _<trust-store-password>_ -importcert -alias _<alias-for-the-certificate>_ -file _<path-to-certificate>_/_<certificate-name>_Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Revised on 2024-02-21 14:02:46 UTC