Deploy a Payara Micro web app to Azure App Service with Maven
In this quickstart, you use the Maven Plugin for Azure App Service Web Apps to deploy a Payara Micro application to Azure App Service on Linux. Choose Java SE deployment over Tomcat and WAR files when you want to consolidate your app's dependencies, runtime, and configuration into a single deployable artifact.
If you don't have an Azure subscription, create a free account before you begin.
Prerequisites
- The Azure CLI, either locally or through Azure Cloud Shell.
- A supported Java Development Kit (JDK). For more information about the JDKs available for use when developing on Azure, see Java support on Azure and Azure Stack.
- Apache Maven, version 3.
Sign in to the Azure CLI
The simplest and easiest way to get the Maven Plugin deploying your Payara Micro application is by using the Azure CLI.
Sign in to your Azure account by using the Azure CLI:
az login
Follow the instructions to complete the sign-in process.
Create a sample app from the MicroProfile Starter
In this section, you create a Payara Micro application and test it locally.
Open a web browser and navigate to the MicroProfile Starter site.
Input or select the field values according to the following table:
Field Value groupId com.microsoft.azure.samples.payaramicro artifactId payaramicro-hello-azure MicroProfile Version MP 3.2 Java SE Version Java 11 MicroProfile Runtime PayaraMicro Examples for Specifications Metrics, OpenAPI Select DOWNLOAD to download the project.
Unzip the archive file by using the following command:
unzip payaraMicro-hello-azure.zip
Run the application in a local environment
Change the directory to the completed project by using the following command:
cd payaramicro-hello-azure/
Build the project by using the following Maven command:
mvn clean package
Run the project by using the following command:
java -jar target/payaramicro-hello-azure-microbundle.jar
Test the web app by browsing to it locally using a web browser. For example, you could use the following command if you have
curl
available:curl http://localhost:8080/data/hello
You should see the following message displayed: Hello World.
Configure the Maven plugin for Azure App Service
In this section, you configure the Payara Micro project pom.xml file so that Maven can deploy the app to Azure App Service on Linux.
Open the pom.xml file in a code editor.
In the
<build>
section of the pom.xml file, insert the following<plugin>
entry inside the<plugins>
tag:<build> <finalName>payaramicro-hello-azure</finalName> <plugins> <plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>1.10.0</version> </plugin> </plugins> </build>
Configure the deployment by running the following Maven command:
mvn azure-webapp:config
Select the following options when prompted:
Input Field Input/Select Value Define value for OS(Default: Linux): 1. linux Define value for javaVersion(Default: Java 8): 1. Java 11 Define value for runtimeStack(Default: TOMCAT 8.5): TOMCAT 8.5 Confirm (Y/N) y [!NOTE] Even though we don't use Tomcat, select
TOMCAT 8.5
at this time. During the detailed configuration, you modify the value fromTOMCAT 8.5
toJava11
.This command produces output similar to the following example:
[INFO] Scanning for projects... [INFO] [INFO] --< com.microsoft.azure.samples.payaramicro:payaramicro-hello-azure >--- [INFO] Building payaramicro-hello-azure 1.0-SNAPSHOT [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- azure-webapp-maven-plugin:1.10.0:config (default-cli) @ payaramicro-hello-azure --- Define value for OS(Default: Linux): 1. linux [*] 2. windows 3. docker Enter index to use: Define value for javaVersion(Default: Java 8): 1. Java 11 2. Java 8 [*] Enter index to use: 1 Define value for runtimeStack(Default: TOMCAT 8.5): 1. TOMCAT 9.0 2. TOMCAT 8.5 [*] Enter index to use: Please confirm webapp properties AppName : payaramicro-hello-azure-1601009217863 ResourceGroup : payaramicro-hello-azure-1601009217863-rg Region : westeurope PricingTier : PremiumV2_P1v2 OS : Linux RuntimeStack : TOMCAT 8.5-java11 Deploy to slot : false Confirm (Y/N)? : y [INFO] Saving configuration to pom. [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 22.302 s [INFO] Finished at: 2020-09-25T13:47:11+09:00 [INFO] ------------------------------------------------------------------------
Modify the
runtime
entry fromTOMCAT 8.5
tojava11
and thedeployment
entry from*.war
to*.jar
. Then add the<appSettings>
section to the<configuration>
section ofPORT
,WEBSITES_PORT
, andWEBSITES_CONTAINER_START_TIME_LIMIT
. Your XML entry forazure-webapp-maven-plugin
should look similar to the following example:<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>1.9.1</version> <configuration> <schemaVersion>V2</schemaVersion> <resourceGroup>microprofile</resourceGroup> <appName>payaramicro-hello-azure-1591860934798</appName> <pricingTier>P1v2</pricingTier> <region>japaneast</region> <runtime> <os>linux</os> <javaVersion>java11</javaVersion> <webContainer>java11</webContainer> </runtime> <appSettings> <property> <name>PORT</name> <value>8080</value> </property> <property> <name>WEBSITES_PORT</name> <value>8080</value> </property> <property> <name>WEBSITES_CONTAINER_START_TIME_LIMIT</name> <value>600</value> </property> </appSettings> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.jar</include> </includes> </resource> </resources> </deployment> </configuration> </plugin>
Deploy the app to Azure
After you configure all of the settings in the preceding sections of this article, you're ready to deploy your web app to Azure. To do so, use the following steps:
From the command prompt or terminal window that you were using earlier, rebuild the JAR file using Maven if you made any changes to the pom.xml file, by using the following command:
mvn clean package
Deploy your web app to Azure by using Maven in the following command:
mvn azure-webapp:deploy
If the deployment succeeded, you see the following output:
[INFO] Successfully deployed the artifact to https://payaramicro-hello-azure-1601009217863.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:58 min
[INFO] Finished at: 2020-09-25T13:55:13+09:00
[INFO] ------------------------------------------------------------------------
Maven deploys your web app to Azure. If the web app or web app plan doesn't already exist, it's created for you. It might take a few minutes before the web app is visible at the URL shown in the output. Navigate to the URL in a Web browser. You should see the following screen:
After your web app deploys, you can manage it through the Azure portal.
Your web app is listed in the microprofile resource group.
You can access to your web app by selecting Browse on the Overview page for your web app. Verify that the deployment was successful and running.
Confirm the log stream from the running App Service
You can view the logs in their entirety or use tail
to view the end of the logs, from the running App Service. Any calls to console.log
in the site code are displayed in the terminal.
az webapp log tail \
--resource-group microprofile \
--name payaramicro-hello-azure-1601009217863
Clean up resources
When the Azure resources are no longer needed, clean up the resources you deployed by deleting the resource group.
- From the Azure portal, select Resource group from the menu.
- Enter microprofile in the Filter by name field. The resource group created in this tutorial should have this prefix.
- Select the resource group created in this tutorial.
- Select Delete resource group from the menu.
Next steps
To learn more about MicroProfile and Azure, continue to the MicroProfile on Azure documentation center.
Additional resources
For more information about the various technologies discussed in this article, see the following articles: