你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:在 Azure 应用服务中创建 Java 应用

在本快速入门中,你将使用适用于 Azure 应用服务 Web 应用的 Maven 插件将 Java Web 应用程序部署到 Azure 应用服务中的 Linux Tomcat 服务器。 应用服务提供高度可缩放、自修复的 Web 应用托管服务。 使用选项卡在 Tomcat、JBoss 或嵌入式服务器 (Java SE) 指令之间切换。

在 Azure 应用服务中运行的 Maven Hello World Web 应用的屏幕截图。

如果 Maven 不是首选开发工具,请查看面向 Java 开发人员的类似教程:

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户

1 - 使用 Azure Cloud Shell

Azure 托管 Azure Cloud Shell(一个可通过浏览器使用的交互式 shell 环境)。 可以将 Bash 或 PowerShell 与 Cloud Shell 配合使用来使用 Azure 服务。 可以使用 Cloud Shell 预安装的命令来运行本文中的代码,而不必在本地环境中安装任何内容。

若要启动 Azure Cloud Shell,请执行以下操作:

选项 示例/链接
选择代码或命令块右上角的“试用”。 选择“试用”不会自动将代码或命令复制到 Cloud Shell。 显示 Azure Cloud Shell 的“试用”示例的屏幕截图。
转到 https://shell.azure.com 或选择“启动 Cloud Shell”按钮可在浏览器中打开 Cloud Shell。 用于启动 Azure Cloud Shell 的按钮。
选择 Azure 门户右上角菜单栏上的 Cloud Shell 按钮。 显示 Azure 门户中的 Cloud Shell 按钮的屏幕截图

若要使用 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 应用服务的过程会自动使用 Azure CLI 中的 Azure 凭据。 如果未在本地安装 Azure CLI,则 Maven 插件会使用 OAuth 或设备登录来进行身份验证。 有关详细信息,请参阅 Maven 插件的身份验证

运行接下来显示的 Maven 命令来配置部署。 此命令将帮助你设置应用服务操作系统、Java 版本和 Tomcat 版本。

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
  1. 对于“创建新的运行配置”,请键入 Y,然后按 Enter

  2. 对于“定义 OS 的值”,请键入 1(对于 Windows)或 2(对于 Linux),然后按 Enter

  3. 对于“定义 javaVersion 的值”,请键入 3(对于 Java 17),然后按 Enter

  4. 对于“定义 WebContainer 的值”,请键入 1(对于 Tomcat 10.0),然后按 Enter

  5. 对于“定义 pricingTier 的值”,请键入 9(对于 P1v2),然后按 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 文件,该文件将 Web 应用配置为在 Azure 应用服务中运行。

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 中修改应用服务的配置。 下表列出了一些常见配置:

properties 必选 说明 版本
<schemaVersion> false 指定配置架构的版本。 支持的值是:v1v2 1.5.2
<subscriptionId> false 指定订阅 ID。 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 开发/测试的最低值 。 有关详细信息,请参阅应用服务定价 0.1.0+
<runtime> false 运行时环境配置。 有关详细信息,请参阅配置详细信息 0.1.0+
<deployment> false 部署配置。 有关详细信息,请参阅配置详细信息 0.1.0+

有关配置的完整列表,请参阅插件参考文档。 所有 Azure Maven 插件共享一组常用配置。 有关这些配置,请参阅常用配置。 有关特定于应用服务的配置,请参阅 Azure Web 应用:配置详细信息

请注意 <appName><resourceGroup> 的值(在演示中相应地为 helloworld-1690440759246helloworld-1690440759246-rg)。 稍后会使用它们。

4 - 部署应用

pom.xml 文件中准备好所有配置后,只需要一个命令即可将 Java 应用部署到 Azure。

mvn package azure-webapp:deploy

在部署完成后,应用程序就会在 http://<appName>.azurewebsites.net/(在演示中为 http://helloworld-1690440759246.azurewebsites.net)处准备就绪。 在本地 Web 浏览器中打开 url,你应该会看到

在 Azure 应用服务中运行的 Maven Hello World Web 应用的屏幕截图。

恭喜! 现已将第一个 Java 应用部署到应用服务。

5 - 清理资源

在前面的步骤中,你在资源组中创建了 Azure 资源。 如果将来不需要这些资源,请从门户删除资源组,或在 Cloud Shell 中运行以下命令来这样做:

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

此命令可能需要花费一点时间运行。

在本快速入门中,你将使用适用于 Azure 应用服务 Web 应用的 Maven 插件将具有嵌入式服务器的 Java Web 应用程序部署到 Azure 应用服务。 应用服务提供高度可缩放、自修复的 Web 应用托管服务。 使用选项卡在 Tomcat、JBoss 或嵌入式服务器 (Java SE) 指令之间切换。

本快速入门使用 azure-webapp-maven-plugin 插件部署 Spring Boot 应用、嵌入式 Tomcat 或 Quarkus 应用。

注意

应用服务可以托管 Spring 应用。 对于需要所有 Spring 服务的 Spring 应用,请改用 Azure Spring Apps

如果 Maven 不是首选开发工具,请查看面向 Java 开发人员的类似教程:

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户

1 - 使用 Azure Cloud Shell

Azure 托管 Azure Cloud Shell(一个可通过浏览器使用的交互式 shell 环境)。 可以将 Bash 或 PowerShell 与 Cloud Shell 配合使用来使用 Azure 服务。 可以使用 Cloud Shell 预安装的命令来运行本文中的代码,而不必在本地环境中安装任何内容。

若要启动 Azure Cloud Shell,请执行以下操作:

选项 示例/链接
选择代码或命令块右上角的“试用”。 选择“试用”不会自动将代码或命令复制到 Cloud Shell。 显示 Azure Cloud Shell 的“试用”示例的屏幕截图。
转到 https://shell.azure.com 或选择“启动 Cloud Shell”按钮可在浏览器中打开 Cloud Shell。 用于启动 Azure Cloud Shell 的按钮。
选择 Azure 门户右上角菜单栏上的 Cloud Shell 按钮。 显示 Azure 门户中的 Cloud Shell 按钮的屏幕截图

若要使用 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 应用服务的过程会自动使用 Azure CLI 中的 Azure 凭据。 如果未在本地安装 Azure CLI,则 Maven 插件会使用 OAuth 或设备登录来进行身份验证。 有关详细信息,请参阅 Maven 插件的身份验证

运行接下来显示的 Maven 命令来配置部署。 此命令将帮助你设置应用服务操作系统、Java 版本和 Tomcat 版本。

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
  1. 对于“创建新的运行配置”,请键入 Y,然后按 Enter

  2. 对于“定义 OS 的值”,请键入 2(对于 Linux),然后按 Enter

  3. 对于“定义 javaVersion 的值”,请键入 1(对于 Java 17),然后按 Enter

  4. 对于“定义 pricingTier 的值”,请键入 9(对于 P1v2),然后按 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 应用服务中运行。

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 中修改应用服务的配置。 下表列出了一些常见配置:

properties 必选 说明 版本
<schemaVersion> false 指定配置架构的版本。 支持的值是:v1v2 1.5.2
<subscriptionId> false 指定订阅 ID。 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 开发/测试的最低值 。 有关详细信息,请参阅应用服务定价 0.1.0+
<runtime> false 运行时环境配置。 有关详细信息,请参阅配置详细信息 0.1.0+
<deployment> false 部署配置。 有关详细信息,请参阅配置详细信息 0.1.0+

有关配置的完整列表,请参阅插件参考文档。 所有 Azure Maven 插件共享一组常用配置。 有关这些配置,请参阅常用配置。 有关特定于应用服务的配置,请参阅 Azure Web 应用:配置详细信息

注意 <appName><resourceGroup> 的值。 稍后会使用它们。

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/ 准备就绪。 使用本地 Web 浏览器打开 URL http://<appName>.azurewebsites.net/greeting(记下 /greeting 路径),你应该会看到:

屏幕截图显示在 Azure 应用服务中运行的 Spring Boot Hello World Web 应用。

祝贺你! 现已将第一个 Java 应用部署到应用服务。

5 - 清理资源

在前面的步骤中,你在资源组中创建了 Azure 资源。 如果将来不需要这些资源,请从门户删除资源组,或在 Cloud Shell 中运行以下命令来这样做:

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

运行此命令可能需要一分钟时间。

在本快速入门中,你将使用适用于 Azure 应用服务 Web 应用的 Maven 插件将 Java Web 应用程序部署到 Azure 应用服务中的 Linux JBoss EAP 服务器。 应用服务提供高度可缩放、自修复的 Web 应用托管服务。 使用选项卡在 Tomcat、JBoss 或嵌入式服务器 (Java SE) 指令之间切换。

在 Azure 应用服务中运行的 Maven Hello World Web 应用的屏幕截图。

如果 Maven 不是首选开发工具,请查看面向 Java 开发人员的类似教程:

如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户

1 - 使用 Azure Cloud Shell

Azure 托管 Azure Cloud Shell(一个可通过浏览器使用的交互式 shell 环境)。 可以将 Bash 或 PowerShell 与 Cloud Shell 配合使用来使用 Azure 服务。 可以使用 Cloud Shell 预安装的命令来运行本文中的代码,而不必在本地环境中安装任何内容。

若要启动 Azure Cloud Shell,请执行以下操作:

选项 示例/链接
选择代码或命令块右上角的“试用”。 选择“试用”不会自动将代码或命令复制到 Cloud Shell。 显示 Azure Cloud Shell 的“试用”示例的屏幕截图。
转到 https://shell.azure.com 或选择“启动 Cloud Shell”按钮可在浏览器中打开 Cloud Shell。 用于启动 Azure Cloud Shell 的按钮。
选择 Azure 门户右上角菜单栏上的 Cloud Shell 按钮。 显示 Azure 门户中的 Cloud Shell 按钮的屏幕截图

若要使用 Azure Cloud Shell,请执行以下操作:

  1. 启动 Cloud Shell。

  2. 选择代码块(或命令块)上的“复制”按钮以复制代码或命令。

  3. 在 Windows 和 Linux 上选择 Ctrl+Shift+V,或在 macOS 上选择 Cmd+Shift+V 将代码或命令粘贴到 Cloud Shell 会话中。

  4. 选择“Enter”运行代码或命令。

2 - 创建 Java 应用

克隆 Pet Store 演示应用程序。

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 应用服务的过程会自动使用 Azure CLI 中的 Azure 凭据。 如果未在本地安装 Azure CLI,则 Maven 插件会使用 OAuth 或设备登录来进行身份验证。 有关详细信息,请参阅 Maven 插件的身份验证

运行接下来显示的 Maven 命令来配置部署。 此命令将帮助你设置应用服务操作系统、Java 版本和 Tomcat 版本。

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
  1. 对于“创建新的运行配置”,请键入 Y,然后按 Enter

  2. 对于“定义 OS 的值”,请键入 2(对于 Linux),然后按 Enter

  3. 对于“定义 javaVersion 的值”,请键入 2(对于 Java 11),然后按 Enter

  4. 对于“webContainer”选项,请键入 1(对于 Jbosseap 7),然后按 Enter

  5. 对于“定义 pricingTier 的值”,请键入 1(对于 P1v3),然后按 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 文件,该文件将 Web 应用配置为在 Azure 应用服务中运行。

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 中修改应用服务的配置。 下表列出了一些常见配置:

properties 必选 说明 版本
<schemaVersion> false 指定配置架构的版本。 支持的值是:v1v2 1.5.2
<subscriptionId> false 指定订阅 ID。 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 开发/测试的最低值 。 有关详细信息,请参阅应用服务定价 0.1.0+
<runtime> false 运行时环境配置。 有关详细信息,请参阅配置详细信息 0.1.0+
<deployment> false 部署配置。 有关详细信息,请参阅配置详细信息 0.1.0+

有关配置的完整列表,请参阅插件参考文档。 所有 Azure Maven 插件共享一组常用配置。 有关这些配置,请参阅常用配置。 有关特定于应用服务的配置,请参阅 Azure Web 应用:配置详细信息

请注意 <appName><resourceGroup> 的值(在演示中相应地为 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)处准备就绪。 在本地 Web 浏览器中打开 url,你应该会看到

在 Azure 应用服务中运行的 Maven Hello World Web 应用的屏幕截图。

恭喜! 现已将第一个 Java 应用部署到应用服务。

5 - 清理资源

在前面的步骤中,你在资源组中创建了 Azure 资源。 如果将来不需要这些资源,请从门户删除资源组,或在 Cloud Shell 中运行以下命令来这样做:

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

此命令可能需要花费一点时间运行。

后续步骤