快速入門:在 Azure App 服務 上建立 Java 應用程式

在本快速入門中,您將使用適用於 Azure App 服務 Web Apps 的 Maven 外掛程式,將 Java Web 應用程式部署至 Azure App 服務 中的 Linux Tomcat 伺服器。 App Service 提供可高度擴充、自我修補的 Web 應用程式裝載服務。 使用索引標籤在 Tomcat、JBoss 或內嵌伺服器 (Java SE) 指示之間切換。

Screenshot of Maven Hello World web app running in Azure App Service.

如果 Maven 不是您慣用的開發工具,請參閱適用於 Java 開發人員的類似教學課程:

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

1 - 使用 Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Screenshot that shows an example of Try It for Azure Cloud Shell.
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 Button to launch Azure Cloud Shell.
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 Screenshot that shows the Cloud Shell button in the Azure portal

若要使用 Azure Cloud Shell:

  1. 啟動 Cloud Shell。

  2. 選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。

  3. 透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。

  4. 選取 Enter 鍵執行程式碼或命令。

2 - 建立 Java 應用程式

在 Cloud Shell 提示字元中執行下列 Maven 命令,以建立名為 helloworld的新應用程式:

mvn archetype:generate "-DgroupId=example.demo" "-DartifactId=helloworld" "-DarchetypeArtifactId=maven-archetype-webapp" "-DarchetypeVersion=1.4" "-Dversion=1.0-SNAPSHOT"

然後將工作目錄變更為項目資料夾:

cd helloworld

3 - 設定 Maven 外掛程式

Azure App 服務 部署程式會自動使用 Azure CLI 中的 Azure 認證。 如果未在本機安裝 Azure CLI,Maven 外掛程式會向 OAuth 或裝置登入進行驗證。 如需詳細資訊,請參閱 使用 Maven 外掛程式進行驗證。

執行設定部署旁顯示的 Maven 命令。 此命令可協助您設定 App Service 作業系統、Java 版本和 Tomcat 版本。

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
  1. 針對 [建立新的執行組態],輸入 Y,然後輸入 Enter

  2. 針對 [ 定義 OS 的值],輸入 1 for Windows 或 2 for Linux,然後 輸入 Enter

  3. 針對 [ 定義 javaVersion 的值],輸入 3 for Java 17,然後 輸入 Enter

  4. 針對 [ 定義 webContainer 的值],輸入 1 做為 Tomcat 10.0,然後 輸入 Enter

  5. 針對 [定義 pricingTier 的值],輸入 P1v2 的 9,然後輸入 Enter

  6. 針對 [確認],輸入 Y,然後輸入 Enter

    Please confirm webapp properties
    AppName : helloworld-1690440759246
    ResourceGroup : helloworld-1690440759246-rg
    Region : centralus
    PricingTier : P1v2
    OS : Linux
    Java Version: Java 17
    Web server stack: Tomcat 10.0
    Deploy to slot : false
    Confirm (Y/N) [Y]: 
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  13.069 s
    [INFO] Finished at: 2023-07-27T06:52:48Z
    [INFO] ------------------------------------------------------------------------
    

在確認選擇後,外掛程式會將上述外掛程式元素和必要設定新增到專案的 pom.xml 檔案,其會設定在 Azure App Service 中執行 Web 應用程式。

檔案的相關 pom.xml 部分看起來應該類似下列範例。

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>           

您可以直接在 中 pom.xml修改 App Service 的組態。 下表列出一些常見的組態:

屬性 必要 描述 版本
<schemaVersion> false 指定組態架構的版本。 支援的值為:、v1v2 1.5.2
<subscriptionId> false 指定訂用帳戶標識碼。 0.1.0+
<resourceGroup> true Web 應用程式的 Azure 資源群組。 0.1.0+
<appName> true Web 應用程式的名稱。 0.1.0+
<region> false 指定要裝載 Web 應用程式的區域;預設值為 centralus。 支援區域區段的所有有效區域 0.1.0+
<pricingTier> false Web 應用程式的定價層。 生產工作負載的預設值為 P1v2 ,而 B2 是 Java 開發/測試的建議最小值。 如需詳細資訊,請參閱 App Service定價 0.1.0+
<runtime> false 運行時間環境組態。 如需詳細資訊,請參閱 設定詳細數據 0.1.0+
<deployment> false 部署組態。 如需詳細資訊,請參閱 設定詳細數據 0.1.0+

如需設定的完整清單,請參閱外掛程式參考文件。 所有 Azure Maven 外掛程式都會共用一組常見的設定。 如需這些設定,請參閱一般設定。 如需 App Service 專用的設定,請參閱 Azure Web 應用程式:設定詳細資料

請小心 和 <resourceGroup> 的值<appName>helloworld-1690440759246helloworld-1690440759246-rg據此在示範中)。 稍後會使用它們。

4 - 部署應用程式

在pom.xml檔案中備妥所有組態后,您可以使用單一命令將 Java 應用程式部署至 Azure。

mvn package azure-webapp:deploy

完成部署之後,您的應用程式就已準備就緒 http://<appName>.azurewebsites.net/http://helloworld-1690440759246.azurewebsites.net 在示範中)。 使用本機網頁瀏覽器開啟 URL,您應該會看到

Screenshot of Maven Hello World web app running in Azure App Service.

恭喜! 您已將第一個 Java 應用程式部署至 App Service。

5 - 清除資源

在上述步驟中,您已建立資源群組中的 Azure 資源。 如果您未來不需要資源,請從入口網站刪除資源群組,或在CloudShell中執行下列命令:

az group delete --name <your resource group name; for example: helloworld-1690440759246-rg> --yes

此命令可能需要一分鐘的時間才能執行。

在本快速入門中,您會使用適用於 Azure App 服務 Web Apps 的 Maven 外掛程式,將具有內嵌伺服器的 Java Web 應用程式部署至 Azure App 服務。 App Service 提供可高度擴充、自我修補的 Web 應用程式裝載服務。 使用索引標籤在 Tomcat、JBoss 或內嵌伺服器 (Java SE) 指示之間切換。

快速入門會使用 azure-webapp-maven-plugin 外掛程式 來部署 Spring Boot 應用程式、內嵌 Tomcat 或 Quarkus 應用程式。

注意

App Service 可以裝載 Spring 應用程式。 針對需要所有 Spring 服務的 Spring 應用程式,請改為嘗試 Azure Spring Apps

如果 Maven 不是您慣用的開發工具,請參閱適用於 Java 開發人員的類似教學課程:

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

1 - 使用 Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Screenshot that shows an example of Try It for Azure Cloud Shell.
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 Button to launch Azure Cloud Shell.
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 Screenshot that shows the Cloud Shell button in the Azure portal

若要使用 Azure Cloud Shell:

  1. 啟動 Cloud Shell。

  2. 選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。

  3. 透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。

  4. 選取 Enter 鍵執行程式碼或命令。

2 - 取得範例應用程式

  1. 下載並解壓縮預設的 Spring Boot Web 應用程式範本。 當您執行 Spring CLI 命令 spring boot new my-webapp時,會為您複製此存放庫。

    git clone https://github.com/rd-1-2022/rest-service my-webapp
    
  2. 將工作目錄變更為項目資料夾:

    cd my-webapp
    

3 - 設定 Maven 外掛程式

Azure App 服務 部署程式會自動使用 Azure CLI 中的 Azure 認證。 如果未在本機安裝 Azure CLI,Maven 外掛程式會向 OAuth 或裝置登入進行驗證。 如需詳細資訊,請參閱 使用 Maven 外掛程式進行驗證。

執行設定部署旁顯示的 Maven 命令。 此命令可協助您設定 App Service 作業系統、Java 版本和 Tomcat 版本。

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
  1. 針對 [建立新的執行組態],輸入 Y,然後輸入 Enter

  2. 針對 [定義 OS 的值],輸入 2 for Linux,然後輸入 Enter

  3. 針對 [ 定義 javaVersion 的值],輸入 1 for Java 17,然後 輸入 Enter

  4. 針對 [定義 pricingTier 的值],輸入 P1v2 的 9,然後輸入 Enter

  5. 針對 [確認],輸入 Y,然後輸入 Enter

    Please confirm webapp properties
    AppName : <generated-app-name>
    ResourceGroup : <generated-app-name>-rg
    Region : centralus
    PricingTier : P1v2
    OS : Linux
    Java Version: Java 17
    Web server stack: Java SE
    Deploy to slot : false
    Confirm (Y/N) [Y]: y
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  8.139 s
    [INFO] Finished at: 2023-07-26T12:42:48Z
    [INFO] ------------------------------------------------------------------------
    

確認您的選擇之後,外掛程式會將上述外掛程式元素和必要設定新增至專案的pom.xml檔案,以將 Web 應用程式設定為在 Azure App 服務 中執行。

檔案的相關 pom.xml 部分看起來應該類似下列範例。

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>           

您可以直接在 中 pom.xml修改 App Service 的組態。 下表列出一些常見的組態:

屬性 必要 描述 版本
<schemaVersion> false 指定組態架構的版本。 支援的值為:、v1v2 1.5.2
<subscriptionId> false 指定訂用帳戶標識碼。 0.1.0+
<resourceGroup> true Web 應用程式的 Azure 資源群組。 0.1.0+
<appName> true Web 應用程式的名稱。 0.1.0+
<region> false 指定要裝載 Web 應用程式的區域;預設值為 centralus。 支援區域區段的所有有效區域 0.1.0+
<pricingTier> false Web 應用程式的定價層。 生產工作負載的預設值為 P1v2 ,而 B2 是 Java 開發/測試的建議最小值。 如需詳細資訊,請參閱 App Service定價 0.1.0+
<runtime> false 運行時間環境組態。 如需詳細資訊,請參閱 設定詳細數據 0.1.0+
<deployment> false 部署組態。 如需詳細資訊,請參閱 設定詳細數據 0.1.0+

如需設定的完整清單,請參閱外掛程式參考文件。 所有 Azure Maven 外掛程式都會共用一組常見的設定。 如需這些設定,請參閱一般設定。 如需 App Service 專用的設定,請參閱 Azure Web 應用程式:設定詳細資料

請留意和<resourceGroup>的值<appName>。 稍後會使用它們。

4 - 部署應用程式

在pom.xml檔案中備妥所有組態后,您可以使用單一命令將 Java 應用程式部署至 Azure。

  1. 使用下列命令建置 JAR 檔案:

    mvn clean package
    
  2. 使用下列命令部署至 Azure:

    mvn azure-webapp:deploy
    

    如果部署成功,您會看到下列輸出:

    [INFO] Successfully deployed the artifact to https://<app-name>.azurewebsites.net
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  02:20 min
    [INFO] Finished at: 2023-07-26T12:47:50Z
    [INFO] ------------------------------------------------------------------------
    

一旦部署完成,您的應用程式就會在 http://<appName>.azurewebsites.net/就緒。 使用本機網頁瀏覽器開啟 URL http://<appName>.azurewebsites.net/greeting (記下 /greeting 路徑),您應該會看到:

Screenshot of Spring Boot Hello World web app running in Azure App Service.

恭喜! 您已將第一個 Java 應用程式部署至 App Service。

5 - 清除資源

在上述步驟中,您已建立資源群組中的 Azure 資源。 如果您未來不需要資源,請從入口網站刪除資源群組,或在CloudShell中執行下列命令:

az group delete --name <your resource group name; for example: quarkus-hello-azure-1690375364238-rg> --yes

執行此命令約需一分鐘。

在本快速入門中,您將使用適用於 Azure App 服務 Web Apps 的 Maven 外掛程式,將 Java Web 應用程式部署至 Azure App 服務 中的 Linux JBoss EAP 伺服器。 App Service 提供可高度擴充、自我修補的 Web 應用程式裝載服務。 使用索引標籤在 Tomcat、JBoss 或內嵌伺服器 (Java SE) 指示之間切換。

Screenshot of Maven Hello World web app running in Azure App Service.

如果 Maven 不是您慣用的開發工具,請參閱適用於 Java 開發人員的類似教學課程:

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

1 - 使用 Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Screenshot that shows an example of Try It for Azure Cloud Shell.
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 Button to launch Azure Cloud Shell.
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 Screenshot that shows the Cloud Shell button in the Azure portal

若要使用 Azure Cloud Shell:

  1. 啟動 Cloud Shell。

  2. 選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。

  3. 透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。

  4. 選取 Enter 鍵執行程式碼或命令。

2 - 建立 Java 應用程式

複製寵物市集示範應用程式。

git clone https://github.com/Azure-Samples/app-service-java-quickstart

將目錄變更為已完成的寵物存放區專案並加以建置。

提示

petstore-ee7 範例需要 Java 11 或更新版本。 範例 booty-duke-app-service 專案需要 Java 17。 如果您安裝的 Java 版本小於 17,請從 目錄內 petstore-ee7 執行組建,而不是在最上層執行。

cd app-service-java-quickstart
git checkout 20230308
cd petstore-ee7
mvn clean install

如果您看到有關處於中斷連結 HEAD 狀態的訊息,則此訊息是安全的忽略。 因為您不會在此快速入門中進行任何 Git 認可,因此中斷連結的 HEAD 狀態是適當的。

3 - 設定 Maven 外掛程式

Azure App 服務 部署程式會自動使用 Azure CLI 中的 Azure 認證。 如果未在本機安裝 Azure CLI,Maven 外掛程式會向 OAuth 或裝置登入進行驗證。 如需詳細資訊,請參閱 使用 Maven 外掛程式進行驗證。

執行設定部署旁顯示的 Maven 命令。 此命令可協助您設定 App Service 作業系統、Java 版本和 Tomcat 版本。

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
  1. 針對 [建立新的執行組態],輸入 Y,然後輸入 Enter

  2. 針對 [定義 OS 的值],輸入 2 for Linux,然後輸入 Enter

  3. 針對 [ 定義 javaVersion 的值],輸入 2 for Java 11,然後 輸入 Enter

  4. 針對 webContainer 選項,輸入 1 代表 Jbosseap 7,然後 輸入 Enter

  5. 針對 [定義 pricingTier 的值],輸入 P1v3 的 1,然後輸入 Enter

  6. 針對 [確認],輸入 Y,然後輸入 Enter

    Please confirm webapp properties
    AppName : petstoreee7-1690443003536
    ResourceGroup : petstoreee7-1690443003536-rg
    Region : centralus
    PricingTier : P1v3
    OS : Linux
    Java Version: Java 11
    Web server stack: Jbosseap 7
    Deploy to slot : false
    Confirm (Y/N) [Y]: 
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  19.914 s
    [INFO] Finished at: 2023-07-27T07:30:20Z
    [INFO] ------------------------------------------------------------------------
    

在確認選擇後,外掛程式會將上述外掛程式元素和必要設定新增到專案的 pom.xml 檔案,其會設定在 Azure App Service 中執行 Web 應用程式。

檔案的相關 pom.xml 部分看起來應該類似下列範例。

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>           

您可以直接在 中 pom.xml修改 App Service 的組態。 下表列出一些常見的組態:

屬性 必要 描述 版本
<schemaVersion> false 指定組態架構的版本。 支援的值為:、v1v2 1.5.2
<subscriptionId> false 指定訂用帳戶標識碼。 0.1.0+
<resourceGroup> true Web 應用程式的 Azure 資源群組。 0.1.0+
<appName> true Web 應用程式的名稱。 0.1.0+
<region> false 指定要裝載 Web 應用程式的區域;預設值為 centralus。 支援區域區段的所有有效區域 0.1.0+
<pricingTier> false Web 應用程式的定價層。 生產工作負載的預設值為 P1v2 ,而 B2 是 Java 開發/測試的建議最小值。 如需詳細資訊,請參閱 App Service定價 0.1.0+
<runtime> false 運行時間環境組態。 如需詳細資訊,請參閱 設定詳細數據 0.1.0+
<deployment> false 部署組態。 如需詳細資訊,請參閱 設定詳細數據 0.1.0+

如需設定的完整清單,請參閱外掛程式參考文件。 所有 Azure Maven 外掛程式都會共用一組常見的設定。 如需這些設定,請參閱一般設定。 如需 App Service 專用的設定,請參閱 Azure Web 應用程式:設定詳細資料

請小心 和 <resourceGroup> 的值<appName>petstoreee7-1690443003536petstoreee7-1690443003536-rg據此在示範中)。 稍後會使用它們。

4 - 部署應用程式

在pom.xml檔案中備妥所有組態后,您可以使用單一命令將 Java 應用程式部署至 Azure。

# Disable testing, as it requires Wildfly to be installed locally.
mvn package azure-webapp:deploy -DskipTests

完成部署之後,您的應用程式就已準備就緒 http://<appName>.azurewebsites.net/http://petstoreee7-1690443003536.azurewebsites.net 在示範中)。 使用本機網頁瀏覽器開啟 URL,您應該會看到

Screenshot of Maven Hello World web app running in Azure App Service.

恭喜! 您已將第一個 Java 應用程式部署至 App Service。

5 - 清除資源

在上述步驟中,您已建立資源群組中的 Azure 資源。 如果您未來不需要資源,請從入口網站刪除資源群組,或在CloudShell中執行下列命令:

az group delete --name <your resource group name; for example: petstoreee7-1690443003536-rg> --yes

此命令可能需要一分鐘的時間才能執行。

下一步