Поделиться через


Развертывание и настройка приложения Tomcat, JBoss или Java SE в службе приложение Azure

В этой статье показана наиболее распространенная конфигурация развертывания и среды выполнения для приложений Java в Служба приложений. Если вы раньше не использовали Службу приложений Azure, мы рекомендуем сначала ознакомиться с кратким руководством по Java. Ответы на общие вопросы об использовании службы приложений, не относящиеся к разработке для Java, можно найти в разделе вопросов и ответов о Службе приложений Azure.

приложение Azure служба запускает веб-приложения Java в полностью управляемой службе в трех вариантах:

  • Java SE — может запускать приложение, развернутое как JAR-пакет, содержащий внедренный сервер (например, Spring Boot, Dropwizard, Quarkus или один с внедренным сервером Tomcat или Jetty).
  • Tomcat — встроенный сервер Tomcat может запускать приложение, развернутое как пакет WAR.
  • JBoss EAP — поддерживается только для приложений Linux в ценовой категории "Премиум" версии 3 и "Изолированная версия 2". Встроенный сервер JBoss EAP может запускать приложение, развернутое как пакет WAR или EAR.

Примечание.

Для приложений Spring рекомендуется использовать Azure Spring Apps. Однако вы по-прежнему можете использовать службу приложение Azure в качестве назначения. Рекомендации по назначению рабочей нагрузки Java см. в руководстве по назначению рабочей нагрузки Java.

Отображение версии Java

Чтобы отобразить сведения о текущей версии Java, выполните в Cloud Shell следующую команду.

az webapp config show --resource-group <resource-group-name> --name <app-name> --query linuxFxVersion

Чтобы отобразить сведения обо всех поддерживаемых версиях Java, выполните в Cloud Shell следующую команду.

az webapp list-runtimes --os linux | grep "JAVA\|TOMCAT\|JBOSSEAP"

Дополнительные сведения о поддержке версий см. в Служба приложений политике поддержки среды выполнения языка.

Развертывание приложения

Build Tools

Maven

Подключаемый модуль Maven для веб-приложений Azure позволяет легко подготовить проект Maven на Java для веб-приложения Azure с помощью одной команды в корневом каталоге проекта:

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

Эта команда добавляет подключаемый azure-webapp-maven-plugin модуль и связанную конфигурацию, запрашивая выбрать существующее веб-приложение Azure или создать новую. Во время настройки он пытается определить, следует ли развертывать приложение в Java SE, Tomcat или (только Linux) JBoss EAP. После этого вы можете развернуть приложение Java в Azure, используя приведенную ниже команду.

mvn package azure-webapp:deploy

Ниже приведен пример конфигурации в pom.xml:

<plugin> 
  <groupId>com.microsoft.azure</groupId>  
  <artifactId>azure-webapp-maven-plugin</artifactId>  
  <version>2.11.0</version>  
  <configuration>
    <subscriptionId>111111-11111-11111-1111111</subscriptionId>
    <resourceGroup>spring-boot-xxxxxxxxxx-rg</resourceGroup>
    <appName>spring-boot-xxxxxxxxxx</appName>
    <pricingTier>B2</pricingTier>
    <region>westus</region>
    <runtime>
      <os>Linux</os>      
      <webContainer>Java SE</webContainer>
      <javaVersion>Java 17</javaVersion>
    </runtime>
    <deployment>
      <resources>
        <resource>
          <type>jar</type>
          <directory>${project.basedir}/target</directory>
          <includes>
            <include>*.jar</include>
          </includes>
        </resource>
      </resources>
    </deployment>
  </configuration>
</plugin> 

Gradle

  1. Настройте подключаемый модуль Gradle для Azure веб-приложения, добавив подключаемый модуль в вашbuild.gradle:

    plugins {
      id "com.microsoft.azure.azurewebapp" version "1.10.0"
    }
    
  2. Настройте сведения о веб-приложении. Соответствующие ресурсы Azure создаются, если они не существуют. Ниже приведен пример конфигурации, дополнительные сведения см. в этом документе.

    azurewebapp {
        subscription = '<your subscription id>'
        resourceGroup = '<your resource group>'
        appName = '<your app name>'
        pricingTier = '<price tier like 'P1v2'>'
        region = '<region like 'westus'>'
        runtime {
          os = 'Linux'
          webContainer = 'Tomcat 10.0' // or 'Java SE' if you want to run an executable jar
          javaVersion = 'Java 17'
        }
        appSettings {
            <key> = <value>
        }
        auth {
            type = 'azure_cli' // support azure_cli, oauth2, device_code and service_principal
        }
    }
    
  3. Выполните развертывание с помощью одной команды.

    gradle azureWebAppDeploy
    

Интерфейсы IDE

Azure поддерживает удобные возможности для разработки Java-приложений в Службе приложений в популярных интегрированных средах разработки Java, включая:

API Kudu

Чтобы развернуть файлы JAR в Java SE, используйте конечную точку /api/publish сайта Kudu. Дополнительные сведения об этом API см. в этой документации.

Примечание.

Чтобы Служба приложений Azure могла идентифицировать и запускать ваше приложение JAR, ему необходимо назначить имя app.jar. Подключаемый модуль Maven выполняет это автоматически во время развертывания. Если вы не хотите переименовать JAR-файл в app.jar, можно отправить скрипт оболочки с помощью команды, чтобы запустить приложение .jar. Вставьте абсолютный путь в этот скрипт в текстовом поле Файл запуска в разделе конфигурации на портале. Скрипт запуска выполняется не в том каталоге, в который он помещен. Поэтому всегда используйте абсолютные пути для создания ссылок на файлы в скрипте запуска (например, java -jar /home/myapp/myapp.jar).

Чтобы развернуть файлы WAR в Tomcat, используйте конечную точку /api/wardeploy/ для публикации файла архива. Дополнительные сведения об этом API см. в этой документации.

Чтобы развернуть файлы WAR в JBoss, используйте конечную точку /api/wardeploy/ для публикации файла архива. Дополнительные сведения об этом API см. в этой документации.

Чтобы развернуть файлы EAR, используйте протокол FTP. Приложение .ear развертывается в корневом каталоге контекста, определенном в конфигурации приложения. Например, если корень контекста приложения — <context-root>myapp</context-root>, вы можете найти сайт по пути /myapp: http://my-app-name.azurewebsites.net/myapp. Если вы хотите, чтобы веб-приложение обслуживалось в корневом пути, убедитесь, что приложение устанавливает корневой каталог контекста в корневой путь: <context-root>/</context-root> Дополнительные сведения см. в разделе Установка корня контекста веб-приложения.

Не развертывайте .war или .jar с помощью FTP. Средство FTP предназначено для передачи сценариев запуска, зависимостей или других файлов среды выполнения. Это не оптимальный выбор для развертывания веб-приложений.

Перезапись или перенаправление URL-адреса

Чтобы переписать или перенаправить URL-адрес, используйте один из доступных средств перезаписи URL-адресов, например UrlRewriteFilter.

Tomcat также предоставляет перезапись клапана.

JBoss также предоставляет перезапись клапана.

Ведение журнала и отладка приложений

Отчеты о производительности, визуализация трафика и проверка работоспособности доступны на портале Azure для каждого приложения. Дополнительные сведения см. в статье Обзор диагностики Службы приложений Azure.

Потоковая передача журналов диагностики

Можно получить доступ к журналам консоли, которые были созданы в контейнере.

Сначала включите ведение журнала контейнера, выполнив следующую команду:

az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem

Замените <app-name> и <resource-group-name> именами, подходящими для вашего веб-приложения.

После включения ведения журнала контейнера, выполните следующую команду, чтобы просмотреть поток данных журнала.

az webapp log tail --name <app-name> --resource-group <resource-group-name>

Если журналы консоли не отображаются, проверьте еще раз через 30 секунд.

Чтобы остановить потоковую передачу журналов, нажмите клавиши CTRL+C.

Вы также можете проверить файлы журнала в браузере на странице https://<app-name>.scm.azurewebsites.net/api/logs/docker.

Дополнительные сведения см. в разделе Потоковая передача журналов в Cloud Shell.

Доступ к консоли SSH в Linux

Чтобы открыть прямой сеанс SSH с контейнером, необходимо запустить приложение.

Вставьте следующий URL-адрес в браузер и замените <app-name> именем вашего приложения:

https://<app-name>.scm.azurewebsites.net/webssh/host

Если вы не прошли аутентификацию, это потребуется сделать, подключившись с помощью подписки Azure. После выполнения проверки подлинности отобразится оболочка в браузере. Здесь можно запускать команды внутри контейнера.

SSL-подключение

Примечание.

Любые изменения, внесенные не в каталоге /home, сохраняются в самом контейнере и не применяются до перезапуска приложения.

Чтобы открыть удаленный сеанс SSH на локальном компьютере см. инструкцию в разделе Открытие сеанса SSH из удаленной оболочки.

Средства устранения неполадок Linux

Встроенные образы Java основаны на операционной системе Alpine Linux. Используйте диспетчер пакетов apk, чтобы установить любые средства или команды для устранения неполадок.

Профилировщик Java

Все среды выполнения Java в службе приложение Azure входят в JDK Flight Recorder для профилирования рабочих нагрузок Java. Его можно использовать для записи событий JVM, системы и приложений и устранения неполадок в приложениях.

Дополнительные сведения о Профилировщике Java см. в документации по приложение Azure Insights.

«Черный ящик»

Все среды выполнения Java в Служба приложений входят в пакет записи тестов Java. Его можно использовать для записи событий JVM, системы и приложений и устранения неполадок в приложениях Java.

Подключитесь к Службе приложений Azure по протоколу SSH и выполните команду jcmd, чтобы просмотреть список всех запущенных процессов Java. Кроме jcmd, вы также должны увидеть, что приложение Java выполняется с идентификатором процесса (PID).

078990bbcd11:/home# jcmd
Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true
147 sun.tools.jcmd.JCmd
116 /home/site/wwwroot/app.jar

Выполните следующую команду, чтобы запустить 30-секундную запись JVM. Он профили JVM и создает JFR-файл с именем jfr_example.jfr в домашнем каталоге. (Замените 116 идентификатором PID приложения Java.)

jcmd 116 JFR.start name=MyRecording settings=profile duration=30s filename="/home/jfr_example.jfr"

В течение 30-секундного интервала можно проверить запись, выполнив команду jcmd 116 JFR.check. Команда отображает все записи для данного процесса Java.

Непрерывная запись

Вы можете использовать средство записи тестов Java для непрерывного профилирования приложения Java с минимальным воздействием на производительность среды выполнения. Для этого выполните следующую команду Azure CLI, чтобы создать параметр приложения JAVA_OPTS с требуемой конфигурацией. Содержимое параметра приложения JAVA_OPTS передается команде java при запуске приложения.

az webapp config appsettings set -g <your_resource_group> -n <your_app_name> --settings JAVA_OPTS=-XX:StartFlightRecording=disk=true,name=continuous_recording,dumponexit=true,maxsize=1024m,maxage=1d

После запуска записи можно в любое время сбросить текущие данные записи с помощью JFR.dump команды.

jcmd <pid> JFR.dump name=continuous_recording filename="/home/recording1.jfr"

Анализ файлов .jfr

Используйте FTPS, чтобы скачать JFR-файл на локальный компьютер. Чтобы проанализировать JFR-файл, скачайте и установите Java Mission Control. Инструкции по Java Mission Control см. в документации по JMC и инструкциям по установке.

Ведение журнала приложений

Включите ведение журнала приложений с помощью портала Azure или Azure CLI, чтобы настроить службу приложений для записи выходных данных стандартной консоли приложения и потоков ошибок стандартной консоли в локальную файловую систему или хранилище BLOB-объектов Azure. Если необходимо более длительное хранение, настройте приложение для записи выходных данных в контейнер больших двоичных объектов.

Журналы приложений Java и Tomcat можно найти в каталоге /home/LogFiles/Application/.

Хранилище BLOB-объектов Azure ведение журнала для приложений на основе Linux можно настроить только с помощью Azure Monitor.

Если приложение использует Logback или Log4j для трассировки, то эти данные трассировки можно передать в Azure Application Insights для просмотра, выполнив инструкции по настройке платформы ведения журнала в разделе Просмотр журналов трассировки Java в Application Insights.

Примечание.

Из-за известной уязвимости CVE-2021-44228 обязательно используйте Log4j версии 2.16 или более поздней.

Настройка

Служба приложений Azure поддерживает настройку с помощью портала Azure и интерфейса командной строки. Ознакомьтесь со следующими статьями о настройке конкретных веб-приложений не на платформе Java:

Локальное копирование содержимого приложения

Задайте параметр JAVA_COPY_ALL приложения, чтобы true скопировать содержимое приложения в локальную рабочую роль из общей файловой системы. Этот параметр помогает устранить проблемы с блокировкой файлов.

Настройка параметров среды выполнения Java

Чтобы настроить выделенную память или другие параметры среды выполнения виртуальной машины Java, создайте параметр приложения с именем JAVA_OPTS с параметрами. При запуске Служба приложений Azure передает этот параметр в качестве переменной среды в среду выполнения Java.

В портал Azure в разделе "Параметры приложения" для веб-приложения создайте новый параметр приложения, который JAVA_OPTS содержит другие параметры, например-Xms512m -Xmx1204m.

В портал Azure в разделе "Параметры приложения" для веб-приложения создайте новый параметр приложения, который CATALINA_OPTS содержит другие параметры, например-Xms512m -Xmx1204m.

Чтобы настроить параметр приложения из подключаемого модуля Maven, добавьте теги "параметр/значение" в раздел подключаемого модуля Azure. В следующем примере задаются минимальный и максимальный размеры кучи для Java.

<appSettings>
    <property>
        <name>JAVA_OPTS</name>
        <value>-Xms1024m -Xmx1024m</value>
    </property>
</appSettings>

Примечание.

При использовании Tomcat в Windows Служба приложений не требуется создать файл web.config.

Разработчики, запускающие отдельное приложение в одном слоте развертывания в плане службы приложений, могут использовать следующие параметры.

  • Экземпляры B1 и S1: -Xms1024m -Xmx1024m
  • Экземпляры B2 и S2: -Xms3072m -Xmx3072m
  • Экземпляры B3 и S3: -Xms6144m -Xmx6144m
  • Экземпляры P1v2: -Xms3072m -Xmx3072m
  • Экземпляры P2v2: -Xms6144m -Xmx6144m
  • Экземпляры P3v2: -Xms12800m -Xmx12800m
  • Экземпляры P1v3: -Xms6656m -Xmx6656m
  • Экземпляры P2v3: -Xms14848m -Xmx14848m
  • Экземпляры P3v3: -Xms30720m -Xmx30720m
  • Экземпляры I1: -Xms3072m -Xmx3072m
  • Экземпляры I2: -Xms6144m -Xmx6144m
  • Экземпляры I3: -Xms12800m -Xmx12800m
  • Экземпляры I1v2: -Xms6656m -Xmx6656m
  • Экземпляры I2v2: -Xms14848m -Xmx14848m
  • Экземпляры I3v2: -Xms30720m -Xmx30720m

При настройке параметров кучи приложения просмотрите сведения о плане службы приложений и примите во внимание, что наличие нескольких приложений и одного слота развертывания требует оптимального выделения памяти.

Включение веб-сокетов

Включите для приложения поддержку веб-сокетов на портале Azure в разделе Параметры приложения. Чтобы параметр вступил в силу, необходимо перезапустить приложение.

Включите поддержку веб-сокетов с помощью Azure CLI, выполнив следующую команду.

az webapp config set --name <app-name> --resource-group <resource-group-name> --web-sockets-enabled true

Затем перезапустите приложение.

az webapp stop --name <app-name> --resource-group <resource-group-name>
az webapp start --name <app-name> --resource-group <resource-group-name>

Настройка кодировки по умолчанию

На портале Azure в разделе Параметры приложения для веб-приложения создайте параметр приложения JAVA_OPTS со значением -Dfile.encoding=UTF-8.

Можно также настроить параметр приложения с помощью подключаемого модуля Maven для службы приложений. Добавьте теги имени и значения параметра в конфигурацию подключаемого модуля.

<appSettings>
    <property>
        <name>JAVA_OPTS</name>
        <value>-Dfile.encoding=UTF-8</value>
    </property>
</appSettings>

Предварительная компиляция JSP-файлов

Чтобы повысить производительность приложений Tomcat, можно скомпилировать JSP-файлы перед развертыванием в службе приложений. Вы можете использовать подключаемый модуль Maven, предоставляемый Apache Sling, или использовать этот файла сборки Ant.

Примечание.

robots933456 в журналах

В журналах контейнера может отобразиться следующее сообщение:

2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"

Это сообщение можно проигнорировать. /robots933456.txt — это фиктивный URL-путь, с помощью которого Служба приложений проверяет, может ли контейнер обслуживать запросы. Ответ 404 означает, что путь не существует. При этом он информирует Службу приложений о том, что контейнер работоспособен и готов отвечать на запросы.

Выбор версии среды выполнения Java

Служба приложений позволяет пользователям выбрать основной номер версии виртуальной машины Java, например Java 8 или Java 11, а также номер исправления, например 1.8.0_232 или 11.0.5. Кроме того, можно выбрать автоматическое обновление номера исправления при появлении новых дополнительных версий. В большинстве случаев рабочие приложения должны использовать закрепленные версии JVM исправлений. Это предотвращает непредвиденные сбои во время автоматического обновления версии исправлений. Все веб-приложения Java используют 64-разрядные виртуальные машины JVM и не настраивается.

Если вы используете Tomcat, можно закрепить версию исправления Tomcat. На Windows версии исправления виртуальной машины Java и Tomcat можно закрепить независимо друг от друга. В Linux можно закрепить версию исправлений Tomcat; Версия исправления JVM также закреплена, но не настраивается отдельно.

Если вы решили закрепить дополнительную версию, необходимо периодически обновлять дополнительную версию JVM в приложении. Чтобы убедиться, что приложение выполняется на более новой дополнительной версии, создайте промежуточный слот и добавите дополнительную версию в промежуточном слоте. Убедившись, что приложение работает правильно в новой дополнительной версии, вы можете переключить промежуточные и рабочие слоты.

Кластеризация

Служба приложений поддерживает кластеризацию для JBoss EAP версии 7.4.1 и выше. Чтобы включить кластеризацию, веб-приложение должно быть интегрировано с виртуальной сетью. При интеграции веб-приложения с виртуальной сетью она перезапускается, а установка JBoss EAP автоматически запускается с кластеризованной конфигурацией. Экземпляры JBoss EAP взаимодействуют через подсеть, указанную в интеграции виртуальной сети, с помощью портов, отображаемых в переменной WEBSITES_PRIVATE_PORTS среды во время выполнения. Кластеризацию можно отключить, создав параметр приложения с именем WEBSITE_DISABLE_CLUSTERING и с любым значением.

Примечание.

Если вы включаете интеграцию виртуальной сети с шаблоном ARM, необходимо вручную задать для свойства vnetPrivatePorts значение 2. Если включить интеграцию виртуальной сети с помощью интерфейса командной строки или портала, это свойство устанавливается автоматически.

Если кластеризация включена, то экземпляры JBoss EAP используют протокол обнаружения FILE_PING JGroups для обнаружения новых экземпляров и сохранения сведений о кластере, таких как члены кластера, их идентификаторы и IP-адреса. В службе приложений эти файлы находятся в папке /home/clusterinfo/. Первый экземпляр EAP для запуска получает разрешения на чтение и запись в файле членства в кластере. Другие экземпляры считывают файл, находят основной узел и координируется с этим узлом, который необходимо включить в кластер и добавить в файл.

Примечание.

Вы можете избежать времени ожидания кластеризации JBOSS, очищая устаревшие файлы обнаружения во время запуска приложения.

Типы планов службы приложений "Премиум" версии 3 и "Изолированный" версии 2 также можно распределить по зонам доступности для повышения устойчивости и надежности критически важных для бизнеса рабочих нагрузок. Эта архитектура также называется избыточностью между зонами. Функция кластеризации JBoss EAP совместима с функцией избыточности зоны.

Правила автомасштабирования

При настройке правил автомасштабирования для горизонтального масштабирования важно удалять экземпляры постепенно (по одному за раз), чтобы каждый удаленный экземпляр может передавать свое действие (например, обработку транзакции базы данных) другому члену кластера. При настройке правил автомасштабирования на портале для уменьшения масштаба используйте следующие параметры:

  • Операция: "Уменьшить количество на".
  • Ожидание: "5 минут" или больше.
  • Число экземпляров: 1.

Вам не нужно добавочно добавлять экземпляры (масштабирование), одновременно добавлять несколько экземпляров в кластер.

Планы службы приложений

JBoss EAP доступен в следующих ценовых категориях: F1, P0v3, P1mv3, P2mv3, P3mv3, P4mv3 и P5mv3.

Базовая конфигурация Tomcat

Примечание.

Этот раздел относится только к Linux.

Разработчики Java могут настраивать параметры сервера, устранять проблемы и развертывать приложения в Tomcat с уверенностью, если они знают о файле server.xml и конфигурации Tomcat. Возможные настройки:

  • Настройка конфигурации Tomcat: понимая сведения о конфигурации server.xml и сведения о конфигурации Tomcat, можно точно настроить параметры сервера в соответствии с потребностями своих приложений.
  • Отладка. При развертывании приложения на сервере Tomcat разработчики должны знать конфигурацию сервера для отладки любых проблем, которые могут возникнуть. Это включает проверку журналов сервера, изучение файлов конфигурации и выявление ошибок, которые могут возникнуть.
  • Устранение неполадок Tomcat: неизбежно разработчики Java сталкиваются с проблемами с сервером Tomcat, такими как проблемы с производительностью или ошибки конфигурации. Понимая server.xml файл и сведения о конфигурации Tomcat, разработчики могут быстро диагностировать и устранять эти проблемы, что может сэкономить время и усилия.
  • Развертывание приложений в Tomcat. Чтобы развернуть веб-приложение Java в Tomcat, разработчикам необходимо знать, как настроить файл server.xml и другие параметры Tomcat. Понимание этих сведений важно для успешного развертывания приложений и обеспечения плавной работы на сервере.

При создании приложения со встроенным tomcat для размещения рабочей нагрузки Java (WAR-файла или JAR-файла) существуют определенные параметры, которые вы получаете из поля для конфигурации Tomcat. Для получения подробных сведений см. официальную документацию по Apache Tomcat, включая конфигурацию по умолчанию для веб-сервера Tomcat.

Кроме того, существуют некоторые преобразования, которые применяются далее поверх server.xml распределения Tomcat при запуске. Это преобразования в параметры соединителя, узла и клапана.

Последние версии Tomcat имеют server.xml (8.5.58 и 9.0.38 далее). Старые версии Tomcat не используют преобразования и могут иметь другое поведение в результате.

Соединитель

<Connector port="${port.http}" address="127.0.0.1" maxHttpHeaderSize="16384" compression="on" URIEncoding="UTF-8" connectionTimeout="${site.connectionTimeout}" maxThreads="${catalina.maxThreads}" maxConnections="${catalina.maxConnections}" protocol="HTTP/1.1" redirectPort="8443"/>
  • maxHttpHeaderSize задано значение 16384
  • URIEncoding задано значение UTF-8
  • conectionTimeout имеет значение WEBSITE_TOMCAT_CONNECTION_TIMEOUT, для которого по умолчанию задано значение 240000
  • maxThreads имеет значение WEBSITE_CATALINA_MAXTHREADS, для которого по умолчанию задано значение 200
  • maxConnections имеет значение WEBSITE_CATALINA_MAXCONNECTIONS, для которого по умолчанию задано значение 10000

Примечание.

Параметры connectionTimeout, maxThreads и maxConnections можно настроить с помощью параметров приложения.

Ниже приведены примеры команд CLI, которые можно использовать для изменения значений conectionTimeout, maxThreads или maxConnections:

az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_TOMCAT_CONNECTION_TIMEOUT=120000
az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_CATALINA_MAXTHREADS=100
az webapp config appsettings set --resource-group myResourceGroup --name myApp --settings WEBSITE_CATALINA_MAXCONNECTIONS=5000
  • Соединитель использует адрес контейнера вместо 127.0.0.1

Хост

<Host appBase="${site.appbase}" xmlBase="${site.xmlbase}" unpackWARs="${site.unpackwars}" workDir="${site.tempdir}" errorReportValveClass="com.microsoft.azure.appservice.AppServiceErrorReportValve" name="localhost" autoDeploy="true">
  • appBase имеет значение AZURE_SITE_APP_BASE, для которого по умолчанию задан локальный WebappsLocalPath
  • xmlBase имеет значение AZURE_SITE_HOME, для которого по умолчанию задано значение /site/wwwroot
  • unpackWARs имеет значение AZURE_UNPACK_WARS, для которого по умолчанию задано значение true
  • workDir имеет значение JAVA_TMP_DIR, для которого задано значение по умолчанию TMP
  • errorReportValveClass использует наш настраиваемый клапан отчета об ошибках

Клапан

<Valve prefix="site_access_log.${catalina.instance.name}" pattern="%h %l %u %t &quot;%r&quot; %s %b %D %{x-arr-log-id}i" directory="${site.logdir}/http/RawLogs" maxDays="${site.logRetentionDays}" className="org.apache.catalina.valves.AccessLogValve" suffix=".txt"/>
  • directory имеет значение AZURE_LOGGING_DIR, для которого по умолчанию задано значение home\logFiles
  • maxDays значение WEBSITE_HTTPLOGGING_RETENTION_DAYS/>, значение которого по умолчанию 0 равно [навсегда]

В Linux она имеет одну и ту же настройку, а также:

  • Добавляет некоторые страницы ошибок и отчетов в клапан:

    <xsl:attribute name="appServiceErrorPage">
        <xsl:value-of select="'${appService.valves.appServiceErrorPage}'"/>
    </xsl:attribute>
    
    <xsl:attribute name="showReport">
        <xsl:value-of select="'${catalina.valves.showReport}'"/>
    </xsl:attribute>
    
    <xsl:attribute name="showServerInfo">
        <xsl:value-of select="'${catalina.valves.showServerInfo}'"/>
    </xsl:attribute>
    

Следующие шаги

Посетите центр Azure для разработчиков Java, чтобы найти краткие руководства Azure, руководства и справочную документацию по Java.