Konfigurera en Java-app för Azure App Service
Azure App Service java-utvecklare att snabbt skapa, distribuera och skala sina Java SE-, Tomcat- och JBoss EAP-webbprogram på en fullständigt hanterad tjänst. Distribuera program med Maven-plugin-program, från kommandoraden eller i redigerare som IntelliJ, Eclipse eller Visual Studio Code.
Den här guiden innehåller viktiga begrepp och instruktioner för Java-utvecklare som använder App Service. Om du aldrig har använt Azure App Service bör du läsa igenom Java-snabbstarten först. Allmänna frågor om hur du App Service som inte är specifika för Java-utveckling besvaras i vanliga App Service vanliga frågor och svar.
Visa Java-version
Om du vill visa den aktuella Java-versionen kör du följande kommando i Cloud Shell:
az webapp config show --name <app-name> --resource-group <resource-group-name> --query "[javaVersion, javaContainer, javaContainerVersion]"
Om du vill visa alla Java-versioner som stöds kör du följande kommando i Cloud Shell:
az webapp list-runtimes | grep java
Om du vill visa den aktuella Java-versionen kör du följande kommando i Cloud Shell:
az webapp config show --resource-group <resource-group-name> --name <app-name> --query linuxFxVersion
Om du vill visa alla Java-versioner som stöds kör du följande kommando i Cloud Shell:
az webapp list-runtimes --linux | grep "JAVA\|TOMCAT\|JBOSSEAP"
Distribuera din app
Byggverktyg
Maven
Med Maven-plugin-programmet för Azure Web Appskan du enkelt förbereda Maven Java-projektet för Azure Web App med ett kommando i projektroten:
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.2.0:config
Det här kommandot lägger azure-webapp-maven-plugin till ett plugin-program och relaterad konfiguration genom att uppmana dig att välja en befintlig Azure-webbapp eller skapa en ny. Sedan kan du distribuera din Java-app till Azure med följande kommando:
mvn package azure-webapp:deploy
Här är en exempelkonfiguration i pom.xml :
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.2.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 11</javaVersion>
</runtime>
<deployment>
<resources>
<resource>
<type>jar</type>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.jar</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
Gradle
Konfigurera Gradle-plugin-programmet för Azure Web Apps genom att lägga till plugin-programmet i
build.gradle:plugins { id "com.microsoft.azure.azurewebapp" version "1.2.0" }Konfigurera information om din webbapp. Motsvarande Azure-resurser skapas om de inte finns. Här är en exempelkonfiguration. Mer information finns i det här dokumentet.
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 9.0' // or 'Java SE' if you want to run an executable jar javaVersion = 'Java 8' } appSettings { <key> = <value> } auth { type = 'azure_cli' // support azure_cli, oauth2, device_code and service_principal } }Distribuera med ett kommando.
gradle azureWebAppDeploy
IDE:er
Azure tillhandahåller sömlös Java App Service utvecklingsupplevelse i populära Java IDE:er, inklusive:
- VS Code: Java Web Apps med Visual Studio Code
- IntelliJ IDEA:Skapa en Hello World-webbapp för Azure App Service med IntelliJ
- Eclipse:Skapa en Hello World-webbapp för Azure App Service med Eclipse
Kudu-API
Java SE
Om du vill distribuera .jar-filer SE Java-fil använder du /api/publish/ kudu-webbplatsens slutpunkt. Mer information om det här API:et finns i den här dokumentationen.
Anteckning
Ditt .jar-program måste ha app.jar namnet för App Service för att identifiera och köra ditt program. Maven-plugin-programmet (nämns ovan) byter automatiskt namn på ditt program åt dig under distributionen. Om du inte vill byta namn på jar-filen till app.jar kan du ladda upp ett kommandoskript med kommandot för att köra .jar-appen. Klistra in den absoluta sökvägen till skriptet i textrutan Startfil i avsnittet Konfiguration i portalen. Startskriptet körs inte från den katalog där den placeras. Använd därför alltid absoluta sökvägar för att referera till filer i startskriptet (till exempel: java -jar /home/myapp/myapp.jar).
Tomcat
Om du vill distribuera WAR-filer till Tomcat använder du /api/wardeploy/ slutpunkten för att PUBLICERA din arkivfil. Mer information om det här API:et finns i den här dokumentationen.
JBoss-EAP
Om du vill distribuera WAR-filer till JBoss använder du /api/wardeploy/ slutpunkten för att PUBLICERA din arkivfil. Mer information om det här API:et finns i den här dokumentationen.
Om du vill distribuera .ear-filer använder du FTP. Ditt .ear-program distribueras till kontextroten som definierats i programmets konfiguration. Om kontextroten för din app till exempel är <context-root>myapp</context-root> kan du bläddra på webbplatsen på /myapp sökvägen: http://my-app-name.azurewebsites.net/myapp . Om du vill att webbappen ska betjänas i rotsökvägen ser du till att appen anger kontextroten till rotsökvägen: <context-root>/</context-root> . Mer information finns i Ställa in kontextroten för ett webbprogram.
Distribuera inte .war eller .jar med FTP. FTP-verktyget är utformat för att ladda upp startskript, beroenden eller andra körningsfiler. Det är inte det optimala valet för att distribuera webbappar.
Logga och felsöka appar
Prestandarapporter, trafikvisualiseringar och hälsokontroll är tillgängliga för varje app via Azure Portal. Mer information finns i Azure App Service diagnostiköversikt.
Strömma diagnostikloggar
Om du vill komma åt konsolloggarna som genereras i din programkod i App Service aktiverar du diagnostisk loggning genom att köra följande kommando i Cloud Shell:
az webapp log config --resource-group <resource-group-name> --name <app-name> --docker-container-logging filesystem --level Verbose
Möjliga värden för --level är: Error, Warning, Info och Verbose. Varje efterföljande nivå omfattar den föregående nivån. Exempel: Error omfattar endast felmeddelanden och Verbose omfattar alla meddelanden.
När diagnostisk loggning har aktiverats kör du följande kommando för att visa loggströmmen:
az webapp log tail --resource-group <resource-group-name> --name <app-name>
Om du inte ser konsolloggarna omedelbart kan du titta efter igen efter 30 sekunder.
Anteckning
Du kan även granska loggfilerna från din webbläsare via https://<app-name>.scm.azurewebsites.net/api/logs/docker.
Skriv Ctrl+C när som helst för att stoppa loggströmningen.
Du kan komma åt konsol loggarna som genereras inifrån behållaren.
Börja med att aktivera behållar loggning genom att köra följande kommando:
az webapp log config --name <app-name> --resource-group <resource-group-name> --docker-container-logging filesystem
Ersätt <app-name> och <resource-group-name> med de namn som är lämpliga för din webbapp.
När containerloggning har aktiverats kör du följande kommando för att visa loggströmmen:
az webapp log tail --name <app-name> --resource-group <resource-group-name>
Om du inte ser konsolloggarna omedelbart kan du titta efter igen efter 30 sekunder.
Om du vill stoppa logg strömningen när som helst, skriver du CTRL + C.
Du kan också granska loggfilerna i en webbläsare på https://<app-name>.scm.azurewebsites.net/api/logs/docker .
Mer information finns i Stream-loggar i Cloud Shell.
SSH-konsolåtkomst
Om du ska öppna en SSH-direktsession med din container måste appen vara igång.
Klistra in följande URL i webbläsaren och ersätt <app-name> med namnet på appen:
https://<app-name>.scm.azurewebsites.net/webssh/host
Om du inte redan har autentiserats måste du autentisera dig med din Azure-prenumeration för att kunna ansluta. När autentiseringen är klar visas ett gränssnitt i webbläsaren där du kan köra kommandon i containern.

Anteckning
Eventuella ändringar som du gör utanför katalogen /start lagras i själva containern och finns inte kvar om appen startas om.
Om du vill öppna en SSH-fjärrsession från den lokala datorn, kan du läsa mer i Öppna SSH-session från fjärrgränssnitt.
Felsökningsverktyg
De inbyggda Java-avbildningarna baseras på Alpine Linux-operativsystemet. Använd apk pakethanteraren för att installera felsökningsverktyg eller kommandon.
Flight Recorder
Alla Java-körningar på App Service använder Azul JVM:erna kommer med Zulu Flight Recorder. Du kan använda detta för att registrera JVM-, system- och programhändelser och felsöka problem i Java-program.
Tidsend inspelning
Om du vill ta en tidsend inspelning behöver du PID (process-ID) för Java-programmet. Du hittar PID genom att öppna en webbläsare till webbappens SCM-webbplats på https://<your-site-name>.scm.azurewebsites.net/ProcessExplorer/ . Den här sidan visar de processer som körs i webbappen. Hitta processen med namnet "java" i tabellen och kopiera motsvarande PID (process-ID).
Öppna sedan felsökningskonsolen i det översta verktygsfältet på SCM-webbplatsen och kör följande kommando. Ersätt <pid> med det process-ID som du kopierade tidigare. Det här kommandot startar en 30-sekunders profilerarinspelning av Java-programmet och genererar en fil timed_recording_example.jfr med namnet i katalogen D:\home .
jcmd <pid> JFR.start name=TimedRecording settings=profile duration=30s filename="D:\home\timed_recording_example.JFR"
SSH i din App Service och kör kommandot jcmd för att se en lista över alla Java-processer som körs. Förutom själva jcmd bör du se att ditt Java-program körs med ett process-ID-nummer (pid).
078990bbcd11:/home# jcmd
Picked up JAVA_TOOL_OPTIONS: -Djava.net.preferIPv4Stack=true
147 sun.tools.jcmd.JCmd
116 /home/site/wwwroot/app.jar
Kör kommandot nedan för att starta en 30-sekundersinspelning av JVM. Detta profilerar JVM och skapar en JFR-fil med namnet jfr_example.jfr i arbetskatalogen. (Ersätt 116 med pid för din Java-app.)
jcmd 116 JFR.start name=MyRecording settings=profile duration=30s filename="/home/jfr_example.jfr"
Under 30-sekundersintervallet kan du verifiera att inspelningen äger rum genom att köra jcmd 116 JFR.check . Då visas alla inspelningar för den angivna Java-processen.
Kontinuerlig registrering
Du kan använda Zulu Flight Recorder för att kontinuerligt profilera ditt Java-program med minimal påverkan på körningsprestanda. Det gör du genom att köra följande Azure CLI-kommando för att skapa en appinställning med JAVA_OPTS med den konfiguration som krävs. Innehållet i den JAVA_OPTS appinställningen skickas till java kommandot när din app startas.
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
När inspelningen har startats kan du när som helst dumpa aktuella inspelningsdata med hjälp av JFR.dump kommandot .
jcmd <pid> JFR.dump name=continuous_recording filename="/home/recording1.jfr"
Analysera .jfr filer
Använd FTPS för att ladda ned JFR-filen till den lokala datorn. Om du vill analysera JFR-filen laddar du ned och installerar Zulu Mission Control. Instruktioner om Zulu Mission Control finns i Azul-dokumentationen och installationsanvisningarna.
Apploggning
Aktivera programloggning via Azure Portal eller Azure CLI för att konfigurera App Service att skriva programmets standardkonsolutdata och standardkonsolfelströmmar till det lokala filsystemet eller Azure Blob Storage. Loggning till den lokala App Service-filsysteminstansen inaktiveras 12 timmar efter att den har konfigurerats. Om du behöver längre kvarhållning konfigurerar du programmet att skriva utdata till en Blob Storage-container. Dina Java- och Tomcat-apploggar finns i katalogen /home/LogFiles/Application/.
Aktivera programloggning via Azure Portal eller Azure CLI för att konfigurera App Service att skriva programmets standardkonsolutdata och standardkonsolfelströmmar till det lokala filsystemet eller Azure Blob Storage. Om du behöver längre kvarhållning konfigurerar du programmet att skriva utdata till en Blob Storage-container. Dina Java- och Tomcat-apploggar finns i katalogen /home/LogFiles/Application/.
Azure Blob Storage-loggning för Linux-baserade App Services kan bara konfigureras med hjälp av Azure Monitor
Om ditt program använder Logback eller Log4j för spårning kan du vidarebefordra spårningarna för granskning i Azure Application Insights med hjälp av konfigurationsanvisningarna för loggningsramverket i Utforska Java-spårningsloggar i Application Insights.
Anpassning och justering
Azure App Service har stöd för direktjustering och anpassning via Azure Portal och CLI. Läs följande artiklar om icke-Java-specifik webbappskonfiguration:
- Konfigurera appinställningar
- Konfigurera en anpassad domän
- Konfigurera TLS/SSL-bindningar
- Lägga till en CDN
- Konfigurera Kudu-webbplatsen
Ange java-körningsalternativ
Om du vill ange allokerat minne eller andra JVM-körningsalternativ skapar du en appinställning med JAVA_OPTS namnet med alternativen. App Service skickar den här inställningen som en miljövariabel till Java-körningen när den startas.
I Azure Portal du under Application Inställningar for the web app (Program Inställningar för webbappen) skapa en ny appinställning med namnet för Java SE eller tomcat som innehåller andra JAVA_OPTS CATALINA_OPTS inställningar, till exempel -Xms512m -Xmx1204m .
Om du vill konfigurera appinställningen från Maven-plugin-programmet lägger du till inställnings-/värdetaggar i avsnittet azure plugin-program. I följande exempel anges en specifik lägsta och högsta Java-heapstorlek:
<appSettings>
<property>
<name>JAVA_OPTS</name>
<value>-Xms512m -Xmx1204m</value>
</property>
</appSettings>
Anteckning
Du behöver inte skapa en web.config när du använder Tomcat på Windows App Service.
Utvecklare som kör ett enda program med ett distributionsfack i App Service plan kan använda följande alternativ:
- B1- och S1-instanser:
-Xms1024m -Xmx1024m - B2- och S2-instanser:
-Xms3072m -Xmx3072m - B3- och S3-instanser:
-Xms6144m -Xmx6144m - P1v2-instanser:
-Xms3072m -Xmx3072m - P2v2-instanser:
-Xms6144m -Xmx6144m - P3v2-instanser:
-Xms12800m -Xmx12800m - P1v3-instanser:
-Xms6656m -Xmx6656m - P2v3-instanser:
-Xms14848m -Xmx14848m - P3v3-instanser:
-Xms30720m -Xmx30720m - I1-instanser:
-Xms3072m -Xmx3072m - I2-instanser:
-Xms6144m -Xmx6144m - I3-instanser:
-Xms12800m -Xmx12800m - I1v2-instanser:
-Xms6656m -Xmx6656m - I2v2-instanser:
-Xms14848m -Xmx14848m - I3v2-instanser:
-Xms30720m -Xmx30720m
När du finjusterar heap-inställningarna för programmet App Service plan informationen och tar hänsyn till att flera program och distributionsfack måste hitta den optimala allokeringen av minne.
Aktivera webbsocketar
Aktivera stöd för webbsocketar i Azure Portal i programinställningarna för programmet. Du måste starta om programmet för att inställningen ska börja gälla.
Aktivera stöd för webbsocket med hjälp av Azure CLI med följande kommando:
az webapp config set --name <app-name> --resource-group <resource-group-name> --web-sockets-enabled true
Starta sedan om programmet:
az webapp stop --name <app-name> --resource-group <resource-group-name>
az webapp start --name <app-name> --resource-group <resource-group-name>
Ange standardteckenkodning
Skapa Azure Portal appinställning med Inställningar värde under Program för webbappen. JAVA_OPTS -Dfile.encoding=UTF-8
Du kan också konfigurera appinställningen med hjälp av App Service Maven. Lägg till inställningens namn och värdetaggar i plugin-konfigurationen:
<appSettings>
<property>
<name>JAVA_OPTS</name>
<value>-Dfile.encoding=UTF-8</value>
</property>
</appSettings>
Förkompilera JSP-filer
För att förbättra prestanda för Tomcat-program kan du kompilera dina JSP-filer innan du distribuerar till App Service. Du kan använda Maven-plugin-programmet som tillhandahålls av Apache Sling eller med den här Ant-build-filen.
Säkra program
Java-program som körs App Service har samma uppsättning säkerhetsmetoder som andra program.
Autentisera användare (Easy Auth)
Konfigurera appautentisering i Azure Portal med alternativet Autentisering och auktorisering. Därifrån kan du aktivera autentisering med hjälp Azure Active Directory eller sociala inloggningar som Facebook, Google eller GitHub. Azure Portal konfigurationen fungerar bara när du konfigurerar en enda autentiseringsprovider. Mer information finns i Konfigurera din App Service för att använda Azure Active Directory inloggning och relaterade artiklar för andra identitetsproviders. Om du behöver aktivera flera inloggningsproviders följer du anvisningarna i artikeln om att anpassa inloggningar och ut loggar.
Java SE
Spring Boot kan använda Azure Active Directory Spring Boot starter för att skydda program med välbekanta Anteckningar och API:er för Spring Security. Se till att öka den maximala rubrikstorleken i filen application.properties. Vi föreslår värdet 16384 .
Tomcat
Ditt Tomcat-program kan komma åt användarens anspråk direkt från servleten genom att ändra huvudobjektet till ett Map-objekt. Map-objektet mappar varje anspråkstyp till en samling anspråk för den typen. I koden nedan är request en instans av HttpServletRequest .
Map<String, Collection<String>> map = (Map<String, Collection<String>>) request.getUserPrincipal();
Nu kan du granska Map objektet för ett specifikt anspråk. Följande kodfragment itererar till exempel igenom alla anspråkstyper och skriver ut innehållet i varje samling.
for (Object key : map.keySet()) {
Object value = map.get(key);
if (value != null && value instanceof Collection {
Collection claims = (Collection) value;
for (Object claim : claims) {
System.out.println(claims);
}
}
}
Använd sökvägen för att logga ut /.auth/ext/logout användare. Om du vill utföra andra åtgärder kan du läsa dokumentationen om att anpassa inloggningar och ut logga ut. Det finns även officiell dokumentation om Gränssnittet Tomcat HttpServletRequest och dess metoder. Följande servlet-metoder baseras också på din App Service konfiguration:
public boolean isSecure()
public String getRemoteAddr()
public String getRemoteHost()
public String getScheme()
public int getServerPort()
Om du vill inaktivera den här funktionen skapar du en WEBSITE_AUTH_SKIP_PRINCIPAL programinställning med namnet med värdet 1 . Om du vill inaktivera alla servlet-filter som App Service av skapar du en inställning med WEBSITE_SKIP_FILTERS namnet med värdet 1 .
Konfigurera TLS/SSL
Följ instruktionerna i Skydda ett anpassat DNS-namn med en TLS/SSL-bindning i Azure App Service för att ladda upp ett befintligt TLS/SSL-certifikat och binda det till programmets domännamn. Som standard tillåter programmet fortfarande HTTP-anslutningar– följ de specifika stegen i självstudien för att framtvinga TLS/SSL.
Använda KeyVault-referenser
Azure KeyVault tillhandahåller centraliserad hemlighetshantering med åtkomstprinciper och granskningshistorik. Du kan lagra hemligheter (till exempel lösenord eller anslutningssträngar) i KeyVault och komma åt dessa hemligheter i ditt program via miljövariabler.
Börja med att följa instruktionerna för att ge din app åtkomst till Key Vault och skapa en KeyVault-referenstill din hemlighet i en programinställning . Du kan verifiera att referensen matchar hemligheten genom att skriva ut miljövariabeln vid fjärråtkomst till App Service terminalen.
Om du vill mata in dessa hemligheter i spring- eller Tomcat-konfigurationsfilen använder du syntaxen för miljövariabeln injection ( ${MY_ENV_VAR} ). Spring-konfigurationsfiler finns i den här dokumentationen om externa konfigurationer.
Använda Java Key Store
Som standard läses alla offentliga eller privata certifikat som överförs till App Service Linux in i respektive Java-nyckelarkiv när containern startar. När du har överfört certifikatet måste du starta om App Service för att det ska läsas in i Java Key Store. Offentliga certifikat läses in i nyckelarkivet $JAVA_HOME/jre/lib/security/cacerts på , och privata certifikat lagras i $JAVA_HOME/lib/security/client.jks .
Det kan krävas mer konfiguration för att kryptera din JDBC-anslutning med certifikat i Java Key Store. Läs dokumentationen för din valda JDBC-drivrutin.
Initiera Java Key Store
Initiera objektet genom import java.security.KeyStore att läsa in keystore-filen med lösenordet. Standardlösenordet för båda nyckelarkiven är changeit .
KeyStore keyStore = KeyStore.getInstance("jks");
keyStore.load(
new FileInputStream(System.getenv("JAVA_HOME")+"/lib/security/cacets"),
"changeit".toCharArray());
KeyStore keyStore = KeyStore.getInstance("pkcs12");
keyStore.load(
new FileInputStream(System.getenv("JAVA_HOME")+"/lib/security/client.jks"),
"changeit".toCharArray());
Läsa in nyckelarkivet manuellt
Du kan läsa in certifikat manuellt till nyckelarkivet. Skapa en appinställning, SKIP_JAVA_KEYSTORE_LOAD , med värdet för för att App Service från att läsa in 1 certifikaten i nyckelarkivet automatiskt. Alla offentliga certifikat som överförs till App Service via Azure Portal lagras under /var/ssl/certs/ . Privata certifikat lagras under /var/ssl/private/ .
Du kan interagera eller felsöka Java Key Tool genom att öppna en SSH-anslutning till App Service och köra kommandot keytool . En lista över kommandon finns i dokumentationen för nyckelverktyget. Mer information om KeyStore-API:et finns i den officiella dokumentationen.
Konfigurera APM-plattformar
Det här avsnittet visar hur du ansluter Java-program som distribueras på Azure App Service med Azure Monitor Application Insights-, NewRelic- och AppDynamics-plattformar för programprestandaövervakning (APM).
Konfigurera Application Insights
Azure Monitor Application Insights är en molnbaserad tjänst för programövervakning som gör det möjligt för kunder att observera fel, flaskhalsar och användningsmönster för att förbättra programprestanda och minska tiden till lösning (MTTR). Med några få klickningar eller CLI-kommandon kan du aktivera övervakning för dina Node.js- eller Java-appar, samla in loggar, mått och distribuerade spårningar automatiskt, vilket eliminerar behovet av att inkludera en SDK i din app.
Azure Portal
Om du vill Insights program från Azure Portal går du till Program Insights på menyn till vänster och väljer Aktivera Insights. Som standard används en ny Application Insights-resurs med samma namn som din webbapp. Du kan välja att använda en befintlig Application Insights-resurs eller ändra namnet. Klicka på Använd längst ned
Azure CLI
Om du vill aktivera via Azure CLI måste du skapa en Application Insights-resurs och ange ett par appinställningar på Azure Portal för att ansluta Application Insights till din webbapp.
Aktivera tillägget Applications Insights
az extension add -n application-insightsSkapa en programresurs Insights hjälp av CLI-kommandot nedan. Ersätt platshållarna med önskat resursnamn och grupp.
az monitor app-insights component create --app <resource-name> -g <resource-group> --location westus2 --kind web --application-type webObservera värdena för
connectionStringoch , du behöver dessa värden i nästainstrumentationKeysteg.Om du vill hämta en lista över andra platser kör du
az account list-locations.
Ange instrumentationsnyckeln, anslutningssträngen och övervakningsagentens version som appinställningar i webbappen. Ersätt
<instrumentationKey><connectionString>och med värdena från föregående steg.az webapp config appsettings set -n <webapp-name> -g <resource-group> --settings "APPINSIGHTS_INSTRUMENTATIONKEY=<instrumentationKey>" "APPLICATIONINSIGHTS_CONNECTION_STRING=<connectionString>" "ApplicationInsightsAgent_EXTENSION_VERSION=~3" "XDT_MicrosoftApplicationInsights_Mode=default" "XDT_MicrosoftApplicationInsights_Java=1"
Ange instrumentationsnyckeln, anslutningssträngen och övervakningsagentens version som appinställningar i webbappen. Ersätt
<instrumentationKey><connectionString>och med värdena från föregående steg.az webapp config appsettings set -n <webapp-name> -g <resource-group> --settings "APPINSIGHTS_INSTRUMENTATIONKEY=<instrumentationKey>" "APPLICATIONINSIGHTS_CONNECTION_STRING=<connectionString>" "ApplicationInsightsAgent_EXTENSION_VERSION=~3" "XDT_MicrosoftApplicationInsights_Mode=default"
Konfigurera New Relic
Skapa ett NewRelic-konto NewRelic.com
Ladda ned Java-agenten från NewRelic. Den har ett filnamn som liknar newrelic-java-x.x.x.zip.
Kopiera din licensnyckel. Du behöver den för att konfigurera agenten senare.
SSH till din App Service instans och skapa en ny katalog /home/site/wwwroot/apm.
Upload de uppackade NewRelic Java-agentfilerna i en katalog under /home/site/wwwroot/apm. Filerna för din agent ska finnas i /home/site/wwwroot/apm/newrelic.
Ändra YAML-filen på /home/site/wwwroot/apm/newrelic/newrelic.yml och ersätt platshållarlicensvärdet med din egen licensnyckel.
I Azure Portal bläddrar du till programmet i App Service skapar en ny programinställning.
- För Java SE-appar skapar du en miljövariabel
JAVA_OPTSmed namnet med värdet-javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jar. - För Tomcat skapar du en miljövariabel med
CATALINA_OPTSnamnet med värdet-javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jar.
- För Java SE-appar skapar du en miljövariabel
Skapa ett NewRelic-konto NewRelic.com
Ladda ned Java-agenten från NewRelic. Den har ett filnamn som liknar newrelic-java-x.x.x.zip.
Kopiera din licensnyckel. Du behöver den för att konfigurera agenten senare.
SSH till din App Service instans och skapa en ny katalog /home/site/wwwroot/apm.
Upload de uppackade NewRelic Java-agentfilerna i en katalog under /home/site/wwwroot/apm. Filerna för din agent ska finnas i /home/site/wwwroot/apm/newrelic.
Ändra YAML-filen på /home/site/wwwroot/apm/newrelic/newrelic.yml och ersätt platshållarlicensvärdet med din egen licensnyckel.
I Azure Portal bläddrar du till programmet i App Service skapar en ny programinställning.
- För Java SE-appar skapar du en miljövariabel
JAVA_OPTSmed namnet med värdet-javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jar. - För Tomcat skapar du en miljövariabel med
CATALINA_OPTSnamnet med värdet-javaagent:/home/site/wwwroot/apm/newrelic/newrelic.jar.
- För Java SE-appar skapar du en miljövariabel
Om du redan har en miljövariabel
JAVA_OPTSför eller lägger du till alternativet i slutet av det aktuellaCATALINA_OPTS-javaagent:/...värdet.
Konfigurera AppDynamics
Skapa ett AppDynamics-konto AppDynamics.com
Ladda ned Java-agenten från AppDynamics-webbplatsen. Filnamnet kommer att likna AppServerAgent-x.x.x.xxxxx.zip
Använd Kudu-konsolen för att skapa en ny katalog /home/site/wwwroot/apm.
Upload Java-agentfilerna till en katalog under /home/site/wwwroot/apm. Filerna för din agent ska finnas i /home/site/wwwroot/apm/appdynamics.
I Azure Portal bläddrar du till programmet i App Service skapar en ny programinställning.
- För Java SE-appar skapar du en miljövariabel med namnet
JAVA_OPTSmed värdet där är App Service-javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-name><app-name>namn. - För Tomcat-appar skapar du en miljövariabel
CATALINA_OPTSmed namnet med värdet där är App Service-javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-name><app-name>namn.
- För Java SE-appar skapar du en miljövariabel med namnet
Skapa ett AppDynamics-konto AppDynamics.com
Ladda ned Java-agenten från AppDynamics-webbplatsen. Filnamnet kommer att likna AppServerAgent-x.x.x.xxxxx.zip
SSH till din App Service instans och skapa en ny katalog /home/site/wwwroot/apm.
Upload Java-agentfilerna till en katalog under /home/site/wwwroot/apm. Filerna för din agent ska finnas i /home/site/wwwroot/apm/appdynamics.
I Azure Portal bläddrar du till programmet i App Service skapar en ny programinställning.
- För Java SE-appar skapar du en miljövariabel med namnet
JAVA_OPTSmed värdet där är App Service-javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-name><app-name>namn. - För Tomcat-appar skapar du en miljövariabel
CATALINA_OPTSmed namnet med värdet där är App Service-javaagent:/home/site/wwwroot/apm/appdynamics/javaagent.jar -Dappdynamics.agent.applicationName=<app-name><app-name>namn.
- För Java SE-appar skapar du en miljövariabel med namnet
Anteckning
Om du redan har en miljövariabel JAVA_OPTS för eller lägger du till alternativet i slutet av det aktuella CATALINA_OPTS -javaagent:/... värdet.
Konfigurera datakällor
Java SE
För att ansluta till datakällor Spring Boot program föreslår vi att du skapar anslutningssträngar och matar in dem i filen application.properties.
I avsnittet Konfiguration på sidan App Service anger du ett namn för strängen, klistrar in JDBC-anslutningssträngen i värdefältet och anger typen till "Anpassad". Du kan också ange den här anslutningssträngen som fackinställning.
Den här anslutningssträngen är tillgänglig för vårt program som en miljövariabel med namnet
CUSTOMCONNSTR_<your-string-name>. Anslutningssträngen som vi skapade ovan får till exempel namnetCUSTOMCONNSTR_exampledb.I filen application.properties refererar du till den här anslutningssträngen med miljövariabelnamnet. I vårt exempel använder vi följande.
app.datasource.url=${CUSTOMCONNSTR_exampledb}
Mer information Spring Boot om dataåtkomst och externa konfigurationer finns i dokumentationen om dataåtkomst.
Tomcat
De här anvisningarna gäller för alla databasanslutningar. Du måste fylla platshållarna med den valda databasens drivrutinsklassnamn och JAR-fil. Tillhandahålls är en tabell med klassnamn och drivrutinsnedladdningar för vanliga databaser.
| Databas | Drivrutinsklassnamn | JDBC-drivrutin |
|---|---|---|
| PostgreSQL | org.postgresql.Driver |
Ladda ned |
| MySQL | com.mysql.jdbc.Driver |
Ladda ned (välj "Plattformsoberoende") |
| SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver |
Ladda ned |
Om du vill konfigurera Tomcat att använda Java Database Connectivity (JDBC) eller JAVA Persistence API (JPA) måste du först anpassa miljövariabeln som läses in av Tomcat vid CATALINA_OPTS start. Ange dessa värden via en appinställning i App Service Maven-pluginprogrammet:
<appSettings>
<property>
<name>CATALINA_OPTS</name>
<value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
</property>
</appSettings>
Eller ange miljövariablerna på sidan > Konfigurationsprogram Inställningar i Azure Portal.
Kontrollera sedan om datakällan ska vara tillgänglig för ett program eller alla program som körs på Tomcat-servleten.
Datakällor på programnivå
Skapa en context.xml-fil i katalogen META-INF/för ditt projekt. Skapa katalogen META-INF/om den inte finns.
I context.xml du till ett
Context-element för att länka datakällan till en JNDI-adress. ErsättdriverClassNameplatshållaren med drivrutinens klassnamn från tabellen ovan.<Context> <Resource name="jdbc/dbconnection" type="javax.sql.DataSource" url="${dbuser}" driverClassName="<insert your driver class name>" username="${dbpassword}" password="${connURL}" /> </Context>Uppdatera programmets web.xml att använda datakällan i ditt program.
<resource-env-ref> <resource-env-ref-name>jdbc/dbconnection</resource-env-ref-name> <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type> </resource-env-ref>
Delade resurser på servernivå
Tomcat-installationer App Service på Windows finns i delat utrymme på App Service plan. Du kan inte ändra en Tomcat-installation direkt för serveromfattande konfiguration. Om du vill göra konfigurationsändringar på servernivå i Tomcat-installationen måste du kopiera Tomcat till en lokal mapp där du kan ändra Tomcats konfiguration.
Automatisera skapandet av anpassad Tomcat vid appstart
Du kan använda ett startskript för att utföra åtgärder innan en webbapp startar. Startskriptet för att anpassa Tomcat måste slutföra följande steg:
- Kontrollera om Tomcat redan har kopierats och konfigurerats lokalt. I så fall kan startskriptet avslutas här.
- Kopiera Tomcat lokalt.
- Gör de nödvändiga konfigurationsändringarna.
- Ange att konfigurationen har slutförts.
För Windows-platser skapar du en fil startup.cmd med namnet eller i katalogen startup.ps1 wwwroot . Detta körs automatiskt innan Tomcat-servern startar.
Här är ett PowerShell-skript som utför följande steg:
# Check for marker file indicating that config has already been done
if(Test-Path "$Env:LOCAL_EXPANDED\tomcat\config_done_marker"){
return 0
}
# Delete previous Tomcat directory if it exists
# In case previous config could not be completed or a new config should be forcefully installed
if(Test-Path "$Env:LOCAL_EXPANDED\tomcat"){
Remove-Item "$Env:LOCAL_EXPANDED\tomcat" --recurse
}
# Copy Tomcat to local
# Using the environment variable $AZURE_TOMCAT90_HOME uses the 'default' version of Tomcat
Copy-Item -Path "$Env:AZURE_TOMCAT90_HOME\*" -Destination "$Env:LOCAL_EXPANDED\tomcat" -Recurse
# Perform the required customization of Tomcat
{... customization ...}
# Mark that the operation was a success
New-Item -Path "$Env:LOCAL_EXPANDED\tomcat\config_done_marker" -ItemType File
Transformering
Ett vanligt användningsfall för att anpassa en Tomcat-version är att ändra konfigurationsfilerna , eller server.xml context.xml web.xml Tomcat. App Service redan dessa filer för att tillhandahålla plattformsfunktioner. Om du vill fortsätta att använda dessa funktioner är det viktigt att bevara innehållet i dessa filer när du gör ändringar i dem. För att åstadkomma detta rekommenderar vi att du använder en XSL-transformering (XSLT). Använd en XSL-transformering för att göra ändringar i XML-filerna samtidigt som det ursprungliga innehållet i filen bevaras.
Exempel på XSLT-fil
Den här exempeltransformeringen lägger till en ny anslutningsnod i server.xml . Observera Identity Transform, som bevarar det ursprungliga innehållet i filen.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<!-- Identity transform: this ensures that the original contents of the file are included in the new file -->
<!-- Ensure that your transform files include this block -->
<xsl:template match="@* | node()" name="Copy">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()" mode="insertConnector">
<xsl:call-template name="Copy" />
</xsl:template>
<xsl:template match="comment()[not(../Connector[@scheme = 'https']) and
contains(., '<Connector') and
(contains(., 'scheme="https"') or
contains(., "scheme='https'"))]">
<xsl:value-of select="." disable-output-escaping="yes" />
</xsl:template>
<xsl:template match="Service[not(Connector[@scheme = 'https'] or
comment()[contains(., '<Connector') and
(contains(., 'scheme="https"') or
contains(., "scheme='https'"))]
)]
">
<xsl:copy>
<xsl:apply-templates select="@* | node()" mode="insertConnector" />
</xsl:copy>
</xsl:template>
<!-- Add the new connector after the last existing Connnector if there is one -->
<xsl:template match="Connector[last()]" mode="insertConnector">
<xsl:call-template name="Copy" />
<xsl:call-template name="AddConnector" />
</xsl:template>
<!-- ... or before the first Engine if there is no existing Connector -->
<xsl:template match="Engine[1][not(preceding-sibling::Connector)]"
mode="insertConnector">
<xsl:call-template name="AddConnector" />
<xsl:call-template name="Copy" />
</xsl:template>
<xsl:template name="AddConnector">
<!-- Add new line -->
<xsl:text>
</xsl:text>
<!-- This is the new connector -->
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystroreFile="${{user.home}}/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
</xsl:template>
</xsl:stylesheet>
Funktion för XSL-transformering
PowerShell har inbyggda verktyg för att transformera XML-filer med XSL-transformeringar. Följande skript är en exempelfunktion som du kan använda i startup.ps1 för att utföra transformeringen:
function TransformXML{
param ($xml, $xsl, $output)
if (-not $xml -or -not $xsl -or -not $output)
{
return 0
}
Try
{
$xslt_settings = New-Object System.Xml.Xsl.XsltSettings;
$XmlUrlResolver = New-Object System.Xml.XmlUrlResolver;
$xslt_settings.EnableScript = 1;
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform;
$xslt.Load($xsl,$xslt_settings,$XmlUrlResolver);
$xslt.Transform($xml, $output);
}
Catch
{
$ErrorMessage = $_.Exception.Message
$FailedItem = $_.Exception.ItemName
Write-Host 'Error'$ErrorMessage':'$FailedItem':' $_.Exception;
return 0
}
return 1
}
Appinställningar
Plattformen måste också veta var din anpassade version av Tomcat är installerad. Du kan ange installationens plats i CATALINA_BASE appinställningen.
Du kan använda Azure CLI för att ändra den här inställningen:
az webapp config appsettings set -g $MyResourceGroup -n $MyUniqueApp --settings CATALINA_BASE="%LOCAL_EXPANDED%\tomcat"
Eller så kan du manuellt ändra inställningen i Azure Portal:
- Gå till Inställningar > > konfigurationsprograminställningar.
- Välj Ny programinställning.
- Använd dessa värden för att skapa inställningen:
- Namn:
CATALINA_BASE - Värde:
"%LOCAL_EXPANDED%\tomcat"
- Namn:
Exempel startup.ps1
Följande exempelskript kopierar en anpassad Tomcat till en lokal mapp, utför en XSL-transformering och anger att transformeringen lyckades:
# Locations of xml and xsl files
$target_xml="$Env:LOCAL_EXPANDED\tomcat\conf\server.xml"
$target_xsl="$Env:HOME\site\server.xsl"
# Define the transform function
# Useful if transforming multiple files
function TransformXML{
param ($xml, $xsl, $output)
if (-not $xml -or -not $xsl -or -not $output)
{
return 0
}
Try
{
$xslt_settings = New-Object System.Xml.Xsl.XsltSettings;
$XmlUrlResolver = New-Object System.Xml.XmlUrlResolver;
$xslt_settings.EnableScript = 1;
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform;
$xslt.Load($xsl,$xslt_settings,$XmlUrlResolver);
$xslt.Transform($xml, $output);
}
Catch
{
$ErrorMessage = $_.Exception.Message
$FailedItem = $_.Exception.ItemName
echo 'Error'$ErrorMessage':'$FailedItem':' $_.Exception;
return 0
}
return 1
}
$success = TransformXML -xml $target_xml -xsl $target_xsl -output $target_xml
# Check for marker file indicating that config has already been done
if(Test-Path "$Env:LOCAL_EXPANDED\tomcat\config_done_marker"){
return 0
}
# Delete previous Tomcat directory if it exists
# In case previous config could not be completed or a new config should be forcefully installed
if(Test-Path "$Env:LOCAL_EXPANDED\tomcat"){
Remove-Item "$Env:LOCAL_EXPANDED\tomcat" --recurse
}
md -Path "$Env:LOCAL_EXPANDED\tomcat"
# Copy Tomcat to local
# Using the environment variable $AZURE_TOMCAT90_HOME uses the 'default' version of Tomcat
Copy-Item -Path "$Env:AZURE_TOMCAT90_HOME\*" "$Env:LOCAL_EXPANDED\tomcat" -Recurse
# Perform the required customization of Tomcat
$success = TransformXML -xml $target_xml -xsl $target_xsl -output $target_xml
# Mark that the operation was a success if successful
if($success){
New-Item -Path "$Env:LOCAL_EXPANDED\tomcat\config_done_marker" -ItemType File
}
Slutför konfigurationen
Slutligen placerar vi drivrutinens JAR:er i Tomcat-klassökvägen och startar om App Service. Kontrollera att JDBC-drivrutinsfilerna är tillgängliga för Tomcat-classloader genom att placera dem i katalogen /home/tomcat/lib. (Skapa den här katalogen om den inte redan finns.) Utför följande steg för att App Service dessa filer till din App Service instans:
I Cloud Shellinstallerar du webbapptillägget:
az extension add -–name webappKör följande CLI-kommando för att skapa en SSH-tunnel från ditt lokala system till App Service:
az webapp remote-connection create --resource-group <resource-group-name> --name <app-name> --port <port-on-local-machine>Anslut till den lokala tunnelporten med SFTP-klienten och ladda upp filerna till mappen /home/tomcat/lib.
Du kan också använda en FTP-klient för att ladda upp JDBC-drivrutinen. Följ de här instruktionerna för att hämta dina FTP-autentiseringsuppgifter.
Tomcat
De här anvisningarna gäller för alla databasanslutningar. Du måste fylla platshållarna med den valda databasens drivrutinsklassnamn och JAR-fil. Tillhandahålls är en tabell med klassnamn och drivrutinsnedladdningar för vanliga databaser.
| Databas | Drivrutinsklassnamn | JDBC-drivrutin |
|---|---|---|
| PostgreSQL | org.postgresql.Driver |
Ladda ned |
| MySQL | com.mysql.jdbc.Driver |
Ladda ned (välj "Plattformsoberoende") |
| SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver |
Ladda ned |
Om du vill konfigurera Tomcat att använda Java Database Connectivity (JDBC) eller JAVA Persistence API (JPA) måste du först anpassa miljövariabeln som läses in av Tomcat vid CATALINA_OPTS start. Ange dessa värden via en appinställning i App Service Maven-pluginprogrammet:
<appSettings>
<property>
<name>CATALINA_OPTS</name>
<value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
</property>
</appSettings>
Eller ange miljövariablerna på sidan > Konfigurationsprogram Inställningar i Azure Portal.
Kontrollera sedan om datakällan ska vara tillgänglig för ett program eller alla program som körs på Tomcat-servleten.
Datakällor på programnivå
Skapa en context.xml-fil i katalogen META-INF/för ditt projekt. Skapa katalogen META-INF/om den inte finns.
I context.xml du till ett
Context-element för att länka datakällan till en JNDI-adress. ErsättdriverClassNameplatshållaren med drivrutinens klassnamn från tabellen ovan.<Context> <Resource name="jdbc/dbconnection" type="javax.sql.DataSource" url="${dbuser}" driverClassName="<insert your driver class name>" username="${dbpassword}" password="${connURL}" /> </Context>Uppdatera programmets web.xml att använda datakällan i ditt program.
<resource-env-ref> <resource-env-ref-name>jdbc/dbconnection</resource-env-ref-name> <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type> </resource-env-ref>
Delade resurser på servernivå
Om du lägger till en delad datakälla på servernivå måste du redigera Tomcats server.xml. Ladda först upp ett startskript och ange sökvägen till skriptet i Startkommando > för konfiguration. Du kan ladda upp startskriptet med FTP.
Startskriptet gör en xsl-transformering till server.xml och matar ut den resulterande xml-filen till /usr/local/tomcat/conf/server.xml . Startskriptet ska installera libxslt via apk. XSL-filen och startskriptet kan laddas upp via FTP. Nedan visas ett exempel på ett startskript.
# Install libxslt. Also copy the transform file to /home/tomcat/conf/
apk add --update libxslt
# Usage: xsltproc --output output.xml style.xsl input.xml
xsltproc --output /home/tomcat/conf/server.xml /home/tomcat/conf/transform.xsl /usr/local/tomcat/conf/server.xml
Ett exempel på en xsl-fil finns nedan. Xsl-exempelfilen lägger till en ny anslutningsnod i Tomcat-server.xml.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()" name="Copy">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()" mode="insertConnector">
<xsl:call-template name="Copy" />
</xsl:template>
<xsl:template match="comment()[not(../Connector[@scheme = 'https']) and
contains(., '<Connector') and
(contains(., 'scheme="https"') or
contains(., "scheme='https'"))]">
<xsl:value-of select="." disable-output-escaping="yes" />
</xsl:template>
<xsl:template match="Service[not(Connector[@scheme = 'https'] or
comment()[contains(., '<Connector') and
(contains(., 'scheme="https"') or
contains(., "scheme='https'"))]
)]
">
<xsl:copy>
<xsl:apply-templates select="@* | node()" mode="insertConnector" />
</xsl:copy>
</xsl:template>
<!-- Add the new connector after the last existing Connnector if there is one -->
<xsl:template match="Connector[last()]" mode="insertConnector">
<xsl:call-template name="Copy" />
<xsl:call-template name="AddConnector" />
</xsl:template>
<!-- ... or before the first Engine if there is no existing Connector -->
<xsl:template match="Engine[1][not(preceding-sibling::Connector)]"
mode="insertConnector">
<xsl:call-template name="AddConnector" />
<xsl:call-template name="Copy" />
</xsl:template>
<xsl:template name="AddConnector">
<!-- Add new line -->
<xsl:text>
</xsl:text>
<!-- This is the new connector -->
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystroreFile="${{user.home}}/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
</xsl:template>
</xsl:stylesheet>
Slutför konfigurationen
Placera slutligen drivrutinens JAR:er i Tomcat-klassökvägen och starta om App Service.
Kontrollera att JDBC-drivrutinsfilerna är tillgängliga för Tomcat-classloader genom att placera dem i katalogen /home/tomcat/lib. (Skapa den här katalogen om den inte redan finns.) Utför följande steg för att App Service dessa filer till din App Service instans:
- I Cloud Shellinstallerar du webbapptillägget:
az extension add -–name webapp- Kör följande CLI-kommando för att skapa en SSH-tunnel från ditt lokala system till App Service:
az webapp remote-connection create --resource-group <resource-group-name> --name <app-name> --port <port-on-local-machine>- Anslut till den lokala tunnelporten med SFTP-klienten och ladda upp filerna till mappen /home/tomcat/lib.
Du kan också använda en FTP-klient för att ladda upp JDBC-drivrutinen. Följ de här instruktionerna för att hämta dina FTP-autentiseringsuppgifter.
Om du har skapat en datakälla på servernivå startar du om App Service Linux-programmet. Tomcat återställs
CATALINA_BASEtill och använder den uppdaterade/home/tomcatkonfigurationen.
JBoss-EAP
Det finns tre grundläggande steg när du registrerar en datakälla med JBoss EAP:ladda upp JDBC-drivrutinen, lägga till JDBC-drivrutinen som en modul och registrera modulen. App Service är en tillståndslös värdtjänst, så konfigurationskommandona för att lägga till och registrera datakällmodulen måste skriptas och tillämpas när containern startar.
Hämta databasens JDBC-drivrutin.
Skapa en XML-moduldefinitionsfil för JDBC-drivrutinen. Exemplet nedan är en moduldefinition för PostgreSQL.
<?xml version="1.0" ?> <module xmlns="urn:jboss:module:1.1" name="org.postgres"> <resources> <!-- ***** IMPORTANT : REPLACE THIS PLACEHOLDER *******--> <resource-root path="/home/site/deployments/tools/postgresql-42.2.12.jar" /> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>Placera dina JBoss CLI-kommandon i en fil med namnet
jboss-cli-commands.cli. JBoss-kommandona måste lägga till modulen och registrera den som en datakälla. Exemplet nedan visar JBoss CLI-kommandon för PostgreSQL.#!/usr/bin/env bash module add --name=org.postgres --resources=/home/site/deployments/tools/postgresql-42.2.12.jar --module-xml=/home/site/deployments/tools/postgres-module.xml /subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource) data-source add --name=postgresDS --driver-name=postgres --jndi-name=java:jboss/datasources/postgresDS --connection-url=${POSTGRES_CONNECTION_URL,env.POSTGRES_CONNECTION_URL:jdbc:postgresql://db:5432/postgres} --user-name=${POSTGRES_SERVER_ADMIN_FULL_NAME,env.POSTGRES_SERVER_ADMIN_FULL_NAME:postgres} --password=${POSTGRES_SERVER_ADMIN_PASSWORD,env.POSTGRES_SERVER_ADMIN_PASSWORD:example} --use-ccm=true --max-pool-size=5 --blocking-timeout-wait-millis=5000 --enabled=true --driver-class=org.postgresql.Driver --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter --jta=true --use-java-context=true --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionCheckerSkapa ett startskript som
startup_script.shanropar JBoss CLI-kommandona. Exemplet nedan visar hur du anroparjboss-cli-commands.clidin . Senare konfigurerar du App Service att köra det här skriptet när containern startar.$JBOSS_HOME/bin/jboss-cli.sh --connect --file=/home/site/deployments/tools/jboss-cli-commands.cliAnvänd valfri FTP-klient och ladda upp JDBC-drivrutinen,
jboss-cli-commands.clistartup_script.sh, och moduldefinitionen till/site/deployments/tools/.Konfigurera platsen så att den
startup_script.shkörs när containern startas. I den Azure Portal navigerar du till Configuration > General Inställningar Startup > Command. Ange startkommandofältet till/home/site/deployments/tools/startup_script.sh. Spara ändringarna.
Bekräfta att datakällan har lagts till på JBoss-servern genom att använda SSH i webbappen och köra $JBOSS_HOME/bin/jboss-cli.sh --connect . När du är ansluten till JBoss kör du /subsystem=datasources:read-resource för att skriva ut en lista över datakällorna.
robots933456 i loggar
Följande meddelande kan visas i containerloggarna:
2019-04-08T14:07:56.641002476Z "-" - - [08/Apr/2019:14:07:56 +0000] "GET /robots933456.txt HTTP/1.1" 404 415 "-" "-"
Du kan ignorera det här meddelandet. /robots933456.txt är en dummysökväg för URL:en som App Service använder till att kontrollera om containern kan hantera begäranden. Ett 404-svar innebär helt enkelt att sökvägen inte finns, men det låter App Service veta att containern är felfri och redo att svara på begäranden.
Välja en Java-körningsversion
App Service kan användarna välja huvudversion av JVM, till exempel Java 8 eller Java 11 och delversionen, till exempel 1.8.0_232 eller 11.0.5. Du kan också välja att den lägre versionen ska uppdateras automatiskt när nya mindre versioner blir tillgängliga. I de flesta fall bör produktionsplatser använda fästa mindre JVM-versioner. Detta förhindrar oväntade avbrott under en automatisk uppdatering av delversionen. Alla Java-webbappar använder 64-bitars JVM,detta kan inte konfigureras.
Om du väljer att fästa delversionen måste du regelbundet uppdatera JVM-delversionen på webbplatsen. För att säkerställa att programmet körs på den nyare delversionen skapar du en mellanlagringsplats och ökar den lägre versionen på mellanlagringsplatsen. När du har bekräftat att programmet körs korrekt på den nya delversionen kan du växla facken för mellanlagring och produktion.
JBoss EAP-App Service planer
JBoss EAP är endast tillgängligt på Premium v3- och Isolerad v2-App Service plantyper. Kunder som skapade en JBoss EAP-webbplats på en annan nivå under den offentliga förhandsversionen bör skala upp till Premium eller isolerad maskinvarunivå för att undvika oväntat beteende.
Stöd för Java Runtime
JDK-versioner och underhåll
Azures Java Development Kit (JDK) som stöds är Zulu som tillhandahålls via Azul Systems. Azul Zulu Enterprise-byggen av OpenJDK är en kostnadsfri, produktionsklar distribution av OpenJDK för Azure och Azure Stack backas upp av Microsoft- och Azul-system. De innehåller alla komponenter för att skapa och köra Java SE-program. Du kan installera JDK från Java JDK-installation.
Större versionsuppdateringar tillhandahålls via nya körningsalternativ i Azure App Service. Kunder uppdaterar till dessa nyare versioner av Java genom att konfigurera sin App Service-distribution och ansvarar för testning och säkerställa att den större uppdateringen uppfyller deras behov.
JDK:er som stöds korrigeras automatiskt kvartalsvis i januari, april, juli och oktober varje år. Mer information om Java på Azure finns i det här supportdokumentet.
Säkerhetsuppdateringar
Korrigeringar och korrigeringar för större säkerhetsproblem kommer att släppas så snart de blir tillgängliga från Azul-system. En "större" säkerhetsrisk definieras av en baspoäng på 9,0 eller högre på NIST Common Vulnerability Scoring System, version 2.
Tomcat 8.0 har nått slutet på sin livslängd (EOL) den 30 september 2018. Även om körningen fortfarande är tillgänglig på Azure App Service kommer Azure inte att tillämpa säkerhetsuppdateringar på Tomcat 8.0. Om möjligt migrerar du dina program till Tomcat 8.5 eller 9.0. Både Tomcat 8.5 och 9.0 finns på Azure App Service. Mer information finns på den officiella Tomcat-webbplatsen.
Utfasning och tillbakadragning
Om en Java-körning som stöds kommer att dras tillbaka får Azure-utvecklare som använder den berörda körningen ett meddelande om utfasning minst sex månader innan körningen dras tillbaka.
Lokal utveckling
Utvecklare kan ladda ned Production Edition av Azul Zulu Enterprise JDK för lokal utveckling från Azuls nedladdningswebbplats.
Utvecklingsstöd
Produktsupporten för Azul Zulu JDK som stöds av Azure är tillgänglig via Microsoft när du utvecklar för Azure eller Azure Stack med ett kvalificerat Azure-supportplan.
Nästa steg
Besök Azure för Java-utvecklarcentret för att hitta Snabbstarter, självstudier och Java-referensdokumentation för Azure.