Nasazení a konfigurace aplikace Tomcat, JBoss nebo Java SE ve službě Aplikace Azure Service
Tento článek ukazuje nejběžnější konfiguraci nasazení a modulu runtime pro aplikace v Javě ve službě App Service. Pokud jste službu Aplikace Azure Service nikdy nepoužívali, měli byste si nejprve přečíst rychlý start pro Javu. Obecné dotazy týkající se používání služby App Service, které nejsou specifické pro vývoj v Javě, najdete v nejčastějších dotazech ke službě App Service.
Aplikace Azure Služba spouští webové aplikace Java v plně spravované službě ve třech variantách:
- Java SE – Může spustit aplikaci nasazenou jako balíček JAR, který obsahuje vložený server (například Spring Boot, Dropwizard, Quarkus nebo jeden s vloženým serverem Tomcat nebo Jetty).
- Tomcat – Integrovaný server Tomcat může spustit aplikaci nasazenou jako balíček WAR.
- JBoss EAP – podporuje se pouze pro aplikace s Linuxem v cenových úrovních Premium v3 a Izolované verze 2. Integrovaný server JBoss EAP může spustit aplikaci nasazenou jako balíček WAR nebo EAR.
Poznámka:
Pro aplikace Spring doporučujeme používat Azure Spring Apps. Službu Aplikace Azure však můžete použít jako cíl. Rady najdete v pokynech k cíli úloh v Javě.
Zobrazit verzi Javy
Pokud chcete zobrazit aktuální verzi Javy, spusťte v Cloud Shellu následující příkaz:
az webapp config show --resource-group <resource-group-name> --name <app-name> --query linuxFxVersion
Pokud chcete zobrazit všechny podporované verze Javy, spusťte v Cloud Shellu následující příkaz:
az webapp list-runtimes --os linux | grep "JAVA\|TOMCAT\|JBOSSEAP"
Další informace o podpoře verzí najdete v tématu Zásady podpory modulu runtime jazyka App Service.
Nasazení aplikace
Build Tools
Maven
S modulem plug-in Maven pro Azure Web Apps můžete snadno připravit projekt Maven Java pro Azure Web App jedním příkazem v kořenovém adresáři projektu:
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
Tento příkaz přidá modul azure-webapp-maven-plugin
plug-in a související konfiguraci tím, že vás vyzve k výběru existující webové aplikace Azure nebo vytvoření nové. Během konfigurace se pokusí zjistit, jestli se vaše aplikace má nasadit do Java SE, Tomcat nebo (jenom Linux) JBoss EAP. Pak můžete aplikaci v Javě nasadit do Azure pomocí následujícího příkazu:
mvn package azure-webapp:deploy
Tady je ukázková konfigurace v 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
Nastavte modul plug-in Gradle pro Azure Web Apps tak, že do svého modulu plug-in přidáte
build.gradle
:plugins { id "com.microsoft.azure.azurewebapp" version "1.10.0" }
Nakonfigurujte podrobnosti o webové aplikaci. Odpovídající prostředky Azure se vytvoří, pokud neexistují. Tady je ukázková konfigurace, kde najdete podrobnosti v tomto dokumentu.
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 } }
Nasazení pomocí jednoho příkazu
gradle azureWebAppDeploy
Prostředí IDE
Azure poskytuje bezproblémové vývojové prostředí služby Java App Service v oblíbených prostředích Java IDEs, včetně následujících:
- VS Code: Webové aplikace v Javě se sadou Visual Studio Code
- IntelliJ IDEA:Vytvoření webové aplikace Hello World pro službu Aplikace Azure pomocí IntelliJ
- Eclipse:Vytvoření webové aplikace Hello World pro službu Aplikace Azure Pomocí Eclipse
Kudu API
Pokud chcete nasadit soubory .jar do Javy SE, použijte /api/publish
koncový bod webu Kudu. Další informace o tomto rozhraní API najdete v této dokumentaci.
Poznámka:
Aby služba App Service identifikovala a spustila vaši aplikaci, musí být vaše .jar aplikace pojmenovaná app.jar
. Modul plug-in Maven to udělá automaticky během nasazování. Pokud nechcete soubor JAR přejmenovat na app.jar, můžete nahrát skript prostředí pomocí příkazu pro spuštění .jar aplikace. Do textového pole Spouštěcí soubor vložte absolutní cestu k tomuto skriptu v části Konfigurace portálu. Spouštěcí skript se nespustí z adresáře, do kterého je umístěný. Proto ve spouštěcím skriptu vždy používejte absolutní cesty k referenčním souborům (například: java -jar /home/myapp/myapp.jar
).
Pokud chcete nasadit soubory .war do Tomcatu, použijte /api/wardeploy/
koncový bod k odeslání archivu souboru. Další informace o tomto rozhraní API najdete v této dokumentaci.
Pokud chcete nasadit soubory .war do JBoss, použijte /api/wardeploy/
koncový bod k odeslání archivu souboru. Další informace o tomto rozhraní API najdete v této dokumentaci.
K nasazení souborů .ear použijte protokol FTP. Aplikace .ear se nasadí do kořene kontextu definovaného v konfiguraci vaší aplikace. Pokud je například kontextová kořen aplikace <context-root>myapp</context-root>
, můžete web procházet na cestě /myapp
: http://my-app-name.azurewebsites.net/myapp
. Pokud chcete, aby byla vaše webová aplikace obsluhována v kořenové cestě, ujistěte se, že vaše aplikace nastaví kořen kontextu na kořenovou cestu: <context-root>/</context-root>
. Další informace naleznete v tématu Nastavení kontextového kořene webové aplikace.
Nenasazujte své .war ani .jar pomocí FTP. Nástroj FTP je navržený tak, aby nahrál spouštěcí skripty, závislosti nebo jiné soubory modulu runtime. Není to optimální volba pro nasazení webových aplikací.
Přepsání nebo přesměrování adresy URL
Pokud chcete přepsat nebo přesměrovat adresu URL, použijte jeden z dostupných rewriterů adres URL, například UrlRewriteFilter.
Tomcat také poskytuje přepisový ventil.
JBoss také poskytuje přepisový ventil.
Protokolování a ladění aplikací
Sestavy výkonu, vizualizace provozu a kontroly stavu jsou dostupné pro každou aplikaci prostřednictvím webu Azure Portal. Další informace najdete v tématu Aplikace Azure Přehled diagnostiky služby.
Streamování diagnostických protokolů
Přístup k protokolům konzoly vygenerovaným z kontejneru.
Nejprve zapněte protokolování kontejneru spuštěním následujícího příkazu:
az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem
Nahraďte <app-name>
názvy vhodné pro vaši webovou aplikaci a <resource-group-name>
nahraďte je názvy.
Jakmile je protokolování kontejneru zapnuté, spuštěním následujícího příkazu zobrazte stream protokolu:
az webapp log tail --name <app-name> --resource-group <resource-group-name>
Pokud nevidíte protokoly konzoly okamžitě, podívejte se znovu za 30 sekund.
Pokud chcete streamování protokolů kdykoli zastavit, zadejte Ctrl+C.
Soubory protokolu můžete také zkontrolovat v prohlížeči na adrese https://<app-name>.scm.azurewebsites.net/api/logs/docker
.
Další informace najdete v tématu Protokoly streamu v Cloud Shellu.
Přístup ke konzole SSH v Linuxu
Pokud chcete otevřít přímou relaci SSH s kontejnerem, vaše aplikace by měla být spuštěná.
Vložte následující adresu URL do vašeho prohlížeče a <app-name>
nahraďte názvem vaší aplikace:
https://<app-name>.scm.azurewebsites.net/webssh/host
Pokud ještě nejste ověření, budete se muset ověřit s vaším předplatným Azure, abyste se mohli připojit. Po ověření se vám zobrazí prostředí prohlížeče, ve kterém můžete spouště příkazy uvnitř vašeho kontejneru.
Poznámka:
Všechny změny provedené mimo adresář /home se uloží ve vlastním kontejneru a po restartování aplikace se neuchovají.
Pokud chcete otevřít vzdálenou relaci SSH z místního počítače, projděte si téma věnované otevření relace SSH ze vzdáleného prostředí.
Nástroje pro řešení potíží s Linuxem
Integrované image Java jsou založené na operačním systému Alpine Linux . apk
Pomocí správce balíčků nainstalujte všechny nástroje nebo příkazy pro řešení potíží.
Java Profiler
Všechny moduly runtime Javy ve službě Aplikace Azure jsou součástí nástroje JDK Flight Recorder pro profilaci úloh Javy. Můžete ho použít k zaznamenání událostí prostředí JVM, systému a aplikací a řešení problémů ve vašich aplikacích.
Další informace o nástroji Java Profiler najdete v dokumentaci k Aplikace Azure lication Insights.
Flight Recorder
Všechny moduly runtime Java ve službě App Service jsou součástí nástroje Java Flight Recorder. Můžete ho použít k zaznamenání událostí JVM, systému a aplikací a řešení problémů v aplikacích v Javě.
Připojte se ke službě App Service pomocí SSH a spusťte jcmd
příkaz, abyste zobrazili seznam všech spuštěných procesů Javy. Kromě samotného jcmd byste měli vidět, že vaše aplikace v Javě běží s číslem ID procesu (pid).
078990bbcd11:/home# jcmd
Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true
147 sun.tools.jcmd.JCmd
116 /home/site/wwwroot/app.jar
Spuštěním následujícího příkazu spusťte 30sekundový záznam prostředí JVM. Profiluje JVM a vytvoří soubor JFR s názvem jfr_example.jfr v domovském adresáři. (Nahraďte 116 pid vaší aplikace v Javě.)
jcmd 116 JFR.start name=MyRecording settings=profile duration=30s filename="/home/jfr_example.jfr"
Během 30sekundového intervalu můžete ověřit, že záznam probíhá spuštěním jcmd 116 JFR.check
. Příkaz zobrazí všechny nahrávky pro daný proces Javy.
Průběžný záznam
Pomocí nástroje Java Flight Recorder můžete průběžně profilovat aplikaci v Javě s minimálním dopadem na výkon modulu runtime. Spuštěním následujícího příkazu Azure CLI vytvořte nastavení aplikace s názvem JAVA_OPTS s potřebnou konfigurací. Obsah nastavení aplikace JAVA_OPTS se předá java
příkazu při spuštění aplikace.
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
Jakmile se záznam spustí, můžete pomocí příkazu kdykoli vyhodit aktuální data záznamu JFR.dump
.
jcmd <pid> JFR.dump name=continuous_recording filename="/home/recording1.jfr"
Analýza .jfr
souborů
Pomocí FTPS stáhněte soubor JFR do místního počítače. Pokud chcete analyzovat soubor JFR, stáhněte a nainstalujte Java Mission Control. Pokyny k nástroji Java Mission Control najdete v dokumentaci JMC a pokyny k instalaci.
Protokolování aplikace
Povolte protokolování aplikace prostřednictvím webu Azure Portal nebo Azure CLI a nakonfigurujte službu App Service tak, aby zapisuje standardní výstup konzoly a standardní datové proudy chyb konzoly do místního systému souborů nebo do služby Azure Blob Storage. Pokud potřebujete delší dobu uchovávání, nakonfigurujte aplikaci tak, aby zapisuje výstup do kontejneru úložiště objektů blob.
Protokoly aplikace Java a Tomcat najdete v adresáři /home/LogFiles/Application/ .
Protokolování služby Azure Blob Storage pro aplikace založené na Linuxu je možné nakonfigurovat pouze pomocí služby Azure Monitor.
Pokud vaše aplikace pro trasování používá logback nebo Log4j, můžete tyto trasování předat pro kontrolu do Aplikace Azure lication Insights pomocí pokynů pro konfiguraci rozhraní protokolování v části Prozkoumání protokolů trasování Java v Application Insights.
Poznámka:
Kvůli známé chybě zabezpečení CVE-2021-44228 nezapomeňte použít Log4j verze 2.16 nebo novější.
Přizpůsobení a ladění
Aplikace Azure Služba podporuje oddělování a přizpůsobení prostřednictvím webu Azure Portal a rozhraní příkazového řádku. V následujících článcích najdete informace o konfiguraci webové aplikace, která není specifická pro Javu:
- Konfigurace nastavení aplikace
- Nastavení vlastní domény
- Konfigurace vazeb TLS/SSL
- Přidání CDN
- Konfigurace webu Kudu
Místní kopírování obsahu aplikace
Nastavte nastavení JAVA_COPY_ALL
aplikace tak, aby true
se obsah aplikace zkopíroval do místního pracovního procesu ze sdíleného systému souborů. Toto nastavení pomáhá řešit problémy se zamykáním souborů.
Nastavení možností modulu runtime Java
Pokud chcete nastavit přidělenou paměť nebo jiné možnosti modulu runtime JVM, vytvořte nastavení aplikace s názvem JAVA_OPTS
s možnostmi. App Service toto nastavení předá jako proměnnou prostředí modulu runtime Java při spuštění.
Na webu Azure Portal v části Nastavení aplikace pro webovou aplikaci vytvořte nové nastavení aplikace s názvem JAVA_OPTS
, které obsahuje další nastavení, například -Xms512m -Xmx1204m
.
Na webu Azure Portal v části Nastavení aplikace pro webovou aplikaci vytvořte nové nastavení aplikace s názvem CATALINA_OPTS
, které obsahuje další nastavení, například -Xms512m -Xmx1204m
.
Pokud chcete nakonfigurovat nastavení aplikace z modulu plug-in Maven, přidejte do části Modul plug-in Azure značky nastavení/hodnoty. Následující příklad nastaví konkrétní minimální a maximální velikost haldy Java:
<appSettings>
<property>
<name>JAVA_OPTS</name>
<value>-Xms1024m -Xmx1024m</value>
</property>
</appSettings>
Poznámka:
Při používání tomcat ve Službě Windows App Service nemusíte vytvářet soubor web.config.
Vývojáři, kteří v plánu služby App Service používají jednu aplikaci s jedním slotem nasazení, můžou použít následující možnosti:
- Instance B1 a S1:
-Xms1024m -Xmx1024m
- Instance B2 a S2:
-Xms3072m -Xmx3072m
- Instance B3 a S3:
-Xms6144m -Xmx6144m
- Instance P1v2:
-Xms3072m -Xmx3072m
- Instance P2v2:
-Xms6144m -Xmx6144m
- Instance P3v2:
-Xms12800m -Xmx12800m
- Instance P1v3:
-Xms6656m -Xmx6656m
- Instance P2v3:
-Xms14848m -Xmx14848m
- Instance P3v3:
-Xms30720m -Xmx30720m
- Instance I1:
-Xms3072m -Xmx3072m
- Instance I2:
-Xms6144m -Xmx6144m
- Instance I3:
-Xms12800m -Xmx12800m
- Instance I1v2:
-Xms6656m -Xmx6656m
- Instance I2v2:
-Xms14848m -Xmx14848m
- Instance I3v2:
-Xms30720m -Xmx30720m
Při ladění nastavení haldy aplikace zkontrolujte podrobnosti plánu služby App Service a vezměte v úvahu několik aplikací a slotů nasazení, abyste našli optimální přidělení paměti.
Zapnutí webových soketů
Zapněte podporu webových soketů na webu Azure Portal v nastavení aplikace pro aplikaci. Aby se nastavení projevilo, musíte aplikaci restartovat.
Zapněte podporu webového soketu pomocí Azure CLI pomocí následujícího příkazu:
az webapp config set --name <app-name> --resource-group <resource-group-name> --web-sockets-enabled true
Pak restartujte aplikaci:
az webapp stop --name <app-name> --resource-group <resource-group-name>
az webapp start --name <app-name> --resource-group <resource-group-name>
Nastavení výchozího kódování znaků
Na webu Azure Portal vytvořte v části Nastavení aplikace pro webovou aplikaci nové nastavení aplikace s názvem JAVA_OPTS
hodnota -Dfile.encoding=UTF-8
.
Případně můžete nakonfigurovat nastavení aplikace pomocí modulu plug-in App Service Maven. Do konfigurace modulu plug-in přidejte značky názvu a hodnoty nastavení:
<appSettings>
<property>
<name>JAVA_OPTS</name>
<value>-Dfile.encoding=UTF-8</value>
</property>
</appSettings>
Předběžné kompilace souborů JSP
Pokud chcete zlepšit výkon aplikací Tomcat, můžete soubory JSP před nasazením do služby App Service zkompilovat. Můžete použít modul plug-in Maven, který poskytuje Apache Sling, nebo použít tento soubor sestavení Ant.
Poznámka:
robots933456 v protokolech
V protokolech kontejneru se může zobrazit následující zpráva:
2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"
Tuto zprávu klidně ignorujte. /robots933456.txt
je fiktivní cesta URL, kterou App Service používá ke kontrole, jestli kontejner dokáže obsloužit požadavky. Odpověď 404 jednoduše indikuje, že příslušná cesta neexistuje, ale dá službě App Service vědět, že kontejner je v pořádku a je připravený reagovat na požadavky.
Volba verze modulu runtime Java
App Service umožňuje uživatelům zvolit hlavní verzi prostředí JVM, jako je Java 8 nebo Java 11, a verzi opravy, například 1.8.0_232 nebo 11.0.5. Můžete také zvolit, aby se verze oprav automaticky aktualizovala, jakmile budou k dispozici nové podverze. Ve většině případů by produkční aplikace měly používat připnuté verze JVM oprav. Tím se zabrání neočekávaným výpadkům během automatického aktualizace verze opravy. Všechny webové aplikace v Javě používají 64bitové virtuální počítače JVM a nedají se konfigurovat.
Pokud používáte Tomcat, můžete se rozhodnout připnout verzi opravy tomcat. Ve Windows můžete nezávisle připnout verze oprav prostředí JVM a Tomcat. V Linuxu můžete připnout verzi opravy Tomcat; Verze opravy prostředí JVM je také připnutá, ale není samostatně konfigurovatelná.
Pokud se rozhodnete připnout podverzi, musíte v aplikaci pravidelně aktualizovat podverzi JVM. Pokud chcete zajistit, aby vaše aplikace běžela v novější podverzi, vytvořte přípravný slot a v přípravném slotu navyšte podverzi. Jakmile ověříte, že aplikace funguje správně v nové podverzi, můžete prohodit přípravné a produkční sloty.
Clustering
App Service podporuje clustering pro JBoss EAP verze 7.4.1 a vyšší. Aby bylo možné povolit clustering, musí být vaše webová aplikace integrovaná s virtuální sítí. Když je webová aplikace integrovaná s virtuální sítí, restartuje se a instalace protokolu EAP JBoss se automaticky spustí s clusterovanou konfigurací. Instance protokolu EAP JBoss komunikují přes podsíť zadanou v integraci virtuální sítě pomocí portů zobrazených v WEBSITES_PRIVATE_PORTS
proměnné prostředí za běhu. Clustering můžete zakázat vytvořením nastavení aplikace s názvem WEBSITE_DISABLE_CLUSTERING
s libovolnou hodnotou.
Poznámka:
Pokud povolíte integraci virtuální sítě se šablonou ARM, musíte vlastnost vnetPrivatePorts
nastavit ručně na hodnotu 2
. Pokud povolíte integraci virtuální sítě z rozhraní příkazového řádku nebo portálu, nastaví se tato vlastnost automaticky.
Když je clustering povolený, instance EAP JBoss používají protokol zjišťování FILE_PING JGroups ke zjišťování nových instancí a uchování informací o clusteru, jako jsou členové clusteru, jejich identifikátory a jejich IP adresy. Ve službě App Service jsou tyto soubory pod /home/clusterinfo/
. První instance protokolu EAP, která se má spustit, získá oprávnění ke čtení a zápisu v souboru členství v clusteru. Ostatní instance načtou soubor, najdou primární uzel a koordinují se s tímto uzlem, který se má zahrnout do clusteru a přidat do souboru.
Poznámka:
Vypršení časových limitů clusteringu JBOSS můžete zabránit vyčištěním zastaralých souborů zjišťování během spouštění aplikace.
Typy plánů služby App Service Úrovně Premium V3 a Izolované verze 2 je možné volitelně distribuovat napříč Zóny dostupnosti, aby se zlepšila odolnost a spolehlivost pro důležité obchodní úlohy. Tato architektura se také označuje jako redundance zón. Funkce clusteringu JBoss EAP je kompatibilní s funkcí redundance zón.
Pravidla automatického škálování
Při konfiguraci pravidel automatického škálování pro horizontální škálování je důležité odebrat instance postupně (po jednom) a zajistit tak, aby každá odebraná instance přenesla svoji aktivitu (například zpracování databázové transakce) do jiného člena clusteru. Při konfiguraci pravidel automatického škálování na portálu pro vertikální snížení kapacity použijte následující možnosti:
- Operace: "Snížit počet o"
- Vychladnutí: "5 minut" nebo vyšší
- Počet instancí: 1
Nemusíte postupně přidávat instance (horizontální navýšení kapacity), do clusteru můžete postupně přidávat více instancí.
Plány služby App Service
JBoss EAP je k dispozici v následujících cenových úrovních: F1, P0v3, P1mv3, P2mv3, P3mv3, P4mv3 a P5mv3.
Základní konfigurace Tomcatu
Poznámka:
Tato část platí jenom pro Linux.
Vývojáři v Javě můžou přizpůsobit nastavení serveru, řešit problémy a nasazovat aplikace do Tomcat s jistotou, pokud vědí o souboru server.xml a podrobnostech konfigurace Tomcatu. Mezi možná přizpůsobení patří:
- Přizpůsobení konfigurace Tomcat: Pochopením server.xml souboru a podrobností o konfiguraci Tomcat můžete doladit nastavení serveru tak, aby odpovídalo potřebám jejich aplikací.
- Ladění: Když je aplikace nasazená na serveru Tomcat, musí vývojáři znát konfiguraci serveru, aby mohli ladit případné problémy. To zahrnuje kontrolu protokolů serveru, zkoumání konfiguračních souborů a identifikaci chyb, ke kterým může dojít.
- Řešení potíží se službou Tomcat: Vývojáři v Javě narazí na problémy se svým serverem Tomcat, jako jsou problémy s výkonem nebo chyby konfigurace. Díky pochopení server.xml souboru a podrobností o konfiguraci Tomcat můžou vývojáři tyto problémy rychle diagnostikovat a řešit, což může ušetřit čas a úsilí.
- Nasazování aplikací do Tomcat: Pokud chcete nasadit webovou aplikaci Java do Tomcatu, musí vývojáři vědět, jak nakonfigurovat server.xml soubor a další nastavení Tomcatu. Pochopení těchto podrobností je nezbytné pro úspěšné nasazení aplikací a zajištění bezproblémového spuštění na serveru.
Když vytvoříte aplikaci s integrovanou službou Tomcat pro hostování úloh v Javě (soubor WAR nebo soubor JAR), jsou k dispozici určitá nastavení, která se dostanou mimo konfiguraci Tomcat. Podrobné informace, včetně výchozí konfigurace webového serveru Tomcat, najdete v oficiální dokumentaci k Apache Tomcat.
Kromě toho existují určité transformace, které jsou dále použity nad server.xml pro distribuci Tomcat po spuštění. Jedná se o transformace nastavení konektoru, hostitele a ventilu.
Nejnovější verze Tomcat mají server.xml (8.5.58 a 9.0.38 dále). Starší verze Tomcat nepoužívají transformace a v důsledku toho můžou mít jiné chování.
Konektor
<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
je nastavená na16384
URIEncoding
je nastavená naUTF-8
conectionTimeout
je nastavená naWEBSITE_TOMCAT_CONNECTION_TIMEOUT
hodnotu , která je výchozí hodnota240000
maxThreads
je nastavená naWEBSITE_CATALINA_MAXTHREADS
hodnotu , která je výchozí hodnota200
maxConnections
je nastavená naWEBSITE_CATALINA_MAXCONNECTIONS
hodnotu , která je výchozí hodnota10000
Poznámka:
Nastavení connectionTimeout, maxThreads a maxConnections je možné ladit pomocí nastavení aplikace.
Následuje příklad příkazů rozhraní příkazového řádku, které můžete použít ke změně hodnot conectionTimeout, maxThreads nebo 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
- Konektor používá adresu kontejneru místo 127.0.0.1.
Hostitelský počítač
<Host appBase="${site.appbase}" xmlBase="${site.xmlbase}" unpackWARs="${site.unpackwars}" workDir="${site.tempdir}" errorReportValveClass="com.microsoft.azure.appservice.AppServiceErrorReportValve" name="localhost" autoDeploy="true">
appBase
je nastavená naAZURE_SITE_APP_BASE
hodnotu , která výchozí hodnota je místní.WebappsLocalPath
xmlBase
je nastavená naAZURE_SITE_HOME
hodnotu , která je výchozí hodnota/site/wwwroot
unpackWARs
je nastavená naAZURE_UNPACK_WARS
hodnotu , která je výchozí hodnotatrue
workDir
je nastavená naJAVA_TMP_DIR
hodnotu , která výchozí nastaveníTMP
errorReportValveClass
používá náš vlastní ventil pro hlášení chyb.
Ventil
<Valve prefix="site_access_log.${catalina.instance.name}" pattern="%h %l %u %t "%r" %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
je nastavená naAZURE_LOGGING_DIR
hodnotu , která je výchozí hodnotahome\logFiles
maxDays
je naWEBSITE_HTTPLOGGING_RETENTION_DAYS
, který se ve výchozím nastavení [0
navždy]
V Linuxu má všechna stejná přizpůsobení a navíc:
Přidá do ventilu několik chyb a nahlašuje stránky:
<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>
Další kroky
Navštivte centrum pro vývojáře v Azure pro Javu a najděte referenční dokumentaci k Azure pro rychlý start, kurzy a referenční dokumentaci k Javě.