Ejercicio: Implementación de una aplicación web de Java en Azure App Service

Completado

En esta unidad, implementará la aplicación en Azure App Service.

¿Qué es Azure App Service?

Azure proporciona Azure App Service como plataforma como servicio (PaaS) para ejecutar Tomcat. Incluye un entorno de Windows y Linux, seguridad, equilibrio de carga, escalado automático e integración de DevOps. Puede dejar la administración del sistema operativo y Tomcat a Azure, y concentrarse en la compilación de aplicaciones.

Screenshot that shows the Azure portal screen.

Obtención de aplicaciones JSF de ejemplo

Para implementar una aplicación web de Java, puede obtener una aplicación web PrimeFaces de JavaServer Faces (JSF) de GitHub como se indica a continuación:

git clone https://github.com/yoshioterada/Deploy-PrimeFaces-JSF-Web-App-on-Tomcat-9.0

Tras la clonación, verá los siguientes archivos en el directorio:

Deploy-PrimeFaces-JSF-Web-App-on-Tomcat-9.0
├── pom.xml
└── src
    └── main
        ├── java
        │   └── com
        │       └── microsoft
        │           └── azure
        │               └── samples
        │                   ├── controller
        │                   │   └── TodoListController.java
        │                   ├── dao
        │                   │   ├── ItemManagement.java
        │                   │   └── TodoItemManagementInMemory.java
        │                   └── model
        │                       └── TodoItem.java
        └── webapp
            ├── META-INF
            │   └── context.xml
            ├── WEB-INF
            │   ├── beans.xml
            │   ├── classes
            │   │   └── logging.properties
            │   ├── faces-config.xml
            │   └── web.xml
            └── index.xhtml

Complemento Maven para Azure App Service

Microsoft proporciona a los desarrolladores de Java el complemento Maven para Azure App Service para facilitar la implementación de aplicaciones en Azure. Con este complemento, puede configurar e implementar fácilmente la aplicación en Azure. Ejecute el siguiente comando para usar el complemento Maven para Azure App Services.

Configurar el complemento Maven para Azure App Service

Para configurar el complemento Maven para Azure App Service, ejecute el siguiente comando:

mvn com.microsoft.azure:azure-webapp-maven-plugin:1.12.0:config

Después del comando, aparecerán algunas preguntas en el símbolo del sistema, así que escriba y seleccione los elementos adecuados y establézcalos. Escriba las opciones siguientes:

Elemento Valor de entrada
Suscripción Elegir la suscripción de Azure
Defina el valor para el sistema operativo 1: Linux
Defina el valor del plan de tarifa P1v2
Defina el valor de la versión de Java 1: Java 8 o 2: Java 11
Defina el valor de la pila de tiempo de ejecución 3: TOMCAT 9.0
Confirme (S/N) Y

Después de hacerlo, se mostrarán los resultados:

mvn com.microsoft.azure:azure-webapp-maven-plugin:1.12.0:config
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
[INFO] Scanning for projects...
[INFO]
[INFO] -----------< com.microsoft.azure.samples:azure-javaweb-app >------------
[INFO] Building azure-javaweb-app Maven Webapp 1.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- azure-webapp-maven-plugin:1.12.0:config (default-cli) @ azure-javaweb-app ---

Available subscriptions:
* 1: My Subscription (********-****-****-****-************)
Please choose a subscription [My Subscription]: [Enter]
[INFO] It may take a few minutes to load all Java Web Apps, please be patient.
[WARNING] There are no Java Web Apps in current subscription, please follow the following steps to create a new one.
Define value for OS [Linux]:
* 1: Linux
  2: Docker
  3: Windows
Enter your choice:
Define value for pricingTier [P1v2]:
   1: B1
   2: B2
   3: B3
   4: D1
   5: F1
*  6: P1v2
   7: P2v2
   8: P3v2
   9: S1
  10: S2
  11: S3
Define value for javaVersion [Java 8]:
* 1: Java 8
  2: Java 11
Enter your choice: 1
Define value for runtimeStack:
  1: Jbosseap 7.2
* 2: Tomcat 8.5
  3: Tomcat 9.0
Enter your choice: 3
Please confirm webapp properties
Subscription Id : aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
AppName : azure-javaweb-app-1604982052600
ResourceGroup : azure-javaweb-app-1604982052600-rg
Region : westeurope
PricingTier : PremiumV2_P1v2
OS : Linux
Java : Java 8
Web server stack: Tomcat 9.0
Deploy to slot : false
Confirm (Y/N) [Y]: y
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  37.656 s
[INFO] Finished at: 2020-10-01T17:24:02+09:00
[INFO] ------------------------------------------------------------------------

Verá una nueva sección en la sección <plugins> del archivo pom.xml.

Si quiere cambiar el nombre del grupo de recursos, el nombre de la instancia y la ubicación de implementación, cambie <resourceGroup>, <appName> y <region>.

    <plugins>
      <plugin>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-webapp-maven-plugin</artifactId>
        <version>1.12.0</version>
        <configuration>
          <schemaVersion>V2</schemaVersion>
          <subscriptionId>********-****-****-****-************</subscriptionId>
          <resourceGroup>azure-javaweb-app</resourceGroup>
          <appName>azure-javaweb-app-1601463451101</appName>
          <pricingTier>P1v2</pricingTier>
          <region>japaneast</region>
          <runtime>
            <os>linux</os>
            <javaVersion>Java 8</javaVersion>
            <webContainer>TOMCAT 9.0</webContainer>
          </runtime>
          <deployment>
            <resources>
              <resource>
                <directory>${project.basedir}/target</directory>
                <includes>
                  <include>*.war</include>
                </includes>
              </resource>
            </resources>
          </deployment>
        </configuration>
      </plugin>
    </plugins>

Compilación e implementación en Azure App Service

Ahora que ha finalizado la configuración para implementar en Azure App Service, vuelva a compilar el código fuente:

mvn clean package

Tras la compilación, use el comando del complemento Maven para Azure Web Apps para implementar la aplicación. Ejecute el comando siguiente:

mvn azure-webapp:deploy

Una vez que se ha completado la implementación, se mostrará el mensaje siguiente.

[INFO] Successfully deployed the artifact to https://azure-javaweb-app-1601463451101.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:15 min
[INFO] Finished at: 2020-11-19T15:55:55+09:00
[INFO] ------------------------------------------------------------------------

La dirección URL pública de la aplicación implementada se muestra en la línea Successfully deployed the artifact to. Acceda a la dirección URL con un explorador, como en el ejemplo siguiente:

https://azure-javaweb-app-1601463451101.azurewebsites.net

Screenshot that shows the deployed web app on Azure App Service.

Confirmación de la secuencia de registro desde la línea de comandos

Para acceder a la secuencia de registro, ejecute el comando siguiente de la CLI:

az webapp log tail -g azure-javaweb-app -n azure-javaweb-app-1601463451101

Obtendrá el siguiente resultado:

Screenshot that shows the execution of the log stream.

Resumen del ejercicio

En esta unidad, ha aprendido a crear y empaquetar una aplicación web de Java, a usar el complemento Maven para Azure Web Apps y a implementar la aplicación en Azure App Service. Estos pasos son aplicables no solo a las aplicaciones de JSF, sino también a la mayoría de las aplicaciones web de Java.