Übung: Bereitstellen einer Java-Webanwendung in Azure App Service

Abgeschlossen

In dieser Lerneinheit stellen Sie Ihre Anwendung in Azure App Service bereit.

Was ist Azure App Service?

Azure stellt Azure App Service als Platform as a Service (PaaS) für die Ausführung von Tomcat bereit. Dieser Dienst umfasst eine Windows- und Linux-Umgebung, Sicherheit, Lastenausgleiche, automatische Skalierung sowie DevOps-Integration. Somit können Sie die Verwaltung des Betriebssystems und der Tomcat-Umgebung Azure überlassen und sich auf das Erstellen von Anwendungen konzentrieren.

Screenshot that shows the Azure portal screen.

Abrufen von JSF-Beispielanwendungen

Wie hier gezeigt, können Sie für die Bereitstellung einer Java-Webanwendung eine PrimeFaces-JSF-Webanwendung von GitHub abrufen:

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

Nach dem Klonen werden die folgenden Dateien im Verzeichnis angezeigt:

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

Maven-Plug-In für Azure App Service

Microsoft stellt das Maven-Plug-In für Azure App Service bereit, um die Bereitstellung von Anwendungen in Azure für Java-Entwickler*innen zu vereinfachen. Mithilfe dieses Plug-Ins können Sie Ihre Anwendung mühelos konfigurieren und in Azure bereitstellen. Führen Sie den folgenden Befehl aus, um das Maven-Plug-In für Azure App Service zu verwenden.

Konfigurieren des Maven-Plug-Ins für Azure App Service

Führen Sie zum Konfigurieren des Maven-Plug-Ins für Azure App Service den folgenden Befehl aus:

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

Nach Ausführung dieses Befehls wird eine Eingabeaufforderung mit Fragen angezeigt. Geben Sie die entsprechenden Elemente an, und legen Sie sie fest. Geben Sie die folgenden Optionen ein:

Element Eingabewert
Subscription Wählen Sie Ihr Azure-Abonnement aus.
Define value for OS (Wert für Betriebssystem definieren) 1: Linux
Define value for pricing tier (Wert für Tarif definieren) P1v2
Define value for Java Version (Wert für Java-Version definieren) 1: Java 8 oder 2: Java 11
Define value for Runtime Stack (Wert für Runtimestapel definieren) 3: TOMCAT 9.0
Confirm (Y/N) (Bestätigen (Ja/Nein)) J

Nach Ausführung des Befehls werden die Ergebnisse angezeigt:

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

Daraufhin wird im Abschnitt <plugins> Ihrer Datei pom.xml ein neuer Abschnitt angezeigt.

Ändern Sie <resourceGroup>, <appName> und <region>, wenn Sie den Ressourcengruppennamen, Instanznamen und Bereitstellungsspeicherort ändern möchten.

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

Kompilieren und Bereitstellen in Azure App Service

Nachdem Sie die Einstellungen für die Bereitstellung in Azure App Service konfiguriert haben, kompilieren Sie den Quellcode noch mal:

mvn clean package

Verwenden Sie nach der Kompilierung den Befehl des Maven-Plug-Ins für Azure-Web-Apps, um Ihre Anwendung bereitzustellen. Führen Sie den folgenden Befehl aus:

mvn azure-webapp:deploy

Nach Abschluss der Bereitstellung wird die folgende Meldung ausgegeben:

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

Die öffentliche URL der bereitgestellten Anwendung wird in der Successfully deployed the artifact to-Zeile angezeigt. Greifen Sie wie im folgenden Beispiel mit einem Browser auf Ihre URL zu:

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

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

Überprüfen des Protokollstreams über die Befehlszeile

Führen Sie den folgenden CLI-Befehl aus, um auf den Protokollstream zuzugreifen:

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

So erhalten Sie folgendes Ergebnis:

Screenshot that shows the execution of the log stream.

Zusammenfassung der Übung

In dieser Lerneinheit haben Sie gelernt, wie Sie eine Java-Webanwendung erstellen und packen, wie Sie das Maven-Plug-In für Azure-Web-Apps verwenden, und wie die Anwendung in Azure App Service bereitgestellt wird. Diese Schritte sind nicht nur für JSF-Anwendungen anwendbar, sondern auch für die meisten Java-Webanwendungen.