Esercizio - Distribuire un'app Web Java in Servizio app di Azure

Completato

In questa unità si distribuirà l'applicazione in Servizio app di Azure.

Che cos'è Servizio app di Azure?

Azure fornisce Servizio app di Azure come piattaforma distribuita come servizio (PaaS) per l'esecuzione di Tomcat. Offre un ambiente Windows e Linux, sicurezza, bilanciamento del carico, scalabilità automatica e integrazione con DevOps. È possibile usare Azure per gestire automaticamente il sistema operativo e Tomcat e concentrarsi sulla compilazione delle applicazioni.

Screenshot that shows the Azure portal screen.

Ottenere applicazioni JSF di esempio

Per distribuire un'applicazione Web Java, è possibile ottenere un'applicazione Web JavaServer Faces (JSF) PrimeFaces da GitHub, come indicato qui:

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

Dopo la clonazione, nella directory saranno presenti i file seguenti:

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

Plug-in Maven per Servizio app di Azure

Microsoft fornisce Maven Plugin per Servizio app di Azure per facilitare la distribuzione delle applicazioni in Azure per gli sviluppatori Java. Usando questo plug-in, è possibile configurare e distribuire facilmente l'applicazione in Azure. Eseguire il comando seguente per usare Maven Plugin per Servizio app di Azure.

Configurare il plug-in Maven per Servizio app di Azure

Per configurare Maven Plugin per Servizio app di Azure, eseguire il comando seguente:

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

Dopo aver eseguito il comando, al prompt verranno visualizzate alcune domande, quindi immettere e selezionare gli elementi appropriati e impostarli. Immettere le opzioni seguenti:

Articolo Valore di input
Abbonamento Scegli la tua sottoscrizione Azure
Define value for OS 1: Linux
Define value for pricing tier P1v2
Define value for Java version 1: Java 8 o 2: Java 11
Define value for runtime stack 3: TOMCAT 9.0
Confirm (Y/N) Y

Dopo aver eseguito il comando, verranno visualizzati i risultati:

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 : f77aafe8-6be4-4d3d-bd9c-d0c37687ef70
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] ------------------------------------------------------------------------

Nella sezione <plugins> del file pom.xml verrà visualizzata una nuova sezione.

Per modificare il nome del gruppo di risorse, il nome dell'istanza e il percorso della distribuzione, modificare <resourceGroup>, <appName> e <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>

Eseguire la compilazione e la distribuzione in Servizio app di Azure

Ora che le impostazioni per la distribuzione in Servizio app di Azure sono state completate, compilare nuovamente il codice sorgente:

mvn clean package

Dopo la compilazione, usare il comando di Maven Plugin per App Web di Azure per distribuire l'applicazione. Eseguire il comando seguente:

mvn azure-webapp:deploy

Al termine della distribuzione, verrà visualizzato il messaggio seguente.

[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] ------------------------------------------------------------------------

L'URL pubblico dell'applicazione distribuita è visualizzato nella riga Successfully deployed the artifact to. Accedere all'URL con un browser, come nell'esempio seguente:

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

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

Verificare il flusso di registrazione dalla riga di comando

Per accedere al flusso di registrazione, eseguire il comando dell'interfaccia della riga di comando seguente:

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

Si otterrà il risultato seguente:

Screenshot that shows the execution of the log stream.

Esercizio di riepilogo

In questa unità si è appreso come creare e inserire in un pacchetto un'applicazione Web Java, come usare Maven Plugin per App Web di Azure e come distribuire l'applicazione in Servizio app di Azure. Questi passaggi sono validi non solo per le applicazioni JSF, ma anche per la maggior parte delle applicazioni Web Java.