Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln visar hur du konfigurerar datakällor i en Java SE-, Tomcat- eller JBoss-app i App Service.
Azure App Service kör Java-webbprogram på en fullständigt hanterad tjänst i tre varianter:
- Java Standard Edition (SE): Kan köra en app som distribueras som ett Java Archive-paket (JAR) som innehåller en inbäddad server (till exempel Spring Boot, Quarkus, Dropwizard eller en app med en inbäddad Tomcat- eller Jetty-server).
- Tomcat: Den inbyggda Tomcat-servern kan köra en app som distribueras som ett WAR-paket (Web Application Archive).
- JBoss Enterprise Application Platform (EAP): Den inbyggda JBoss EAP-servern kan köra en app som distribueras som ett WAR- eller företagsarkivpaket (EAR). Stöds för Linux-appar i en uppsättning prisnivåer som innehåller Kostnadsfri, Premium v3 och Isolerad v2.gti
Anmärkning
JBoss EAP på App Service stöder nu BYOL-fakturering (Bring Your Own License), vilket gör att kunder med befintliga Red Hat-prenumerationer kan tillämpa dessa licenser direkt på sina JBoss EAP-distributioner i Azure App Service. Läs mer.
Konfigurera datakällan
För att ansluta till datakällor i Spring Boot-program rekommenderar vi att du skapar anslutningssträng och matar in dem i filen application.properties.
- I avsnittet "Konfiguration" på App Service-sidan anger du ett namn för strängen, klistrar in JDBC-anslutningssträng i värdefältet och anger typen "Anpassad". Du kan utan vidare ange den här anslutningssträngen som platsinställning. - Den här anslutningssträng är tillgänglig för vårt program som en miljövariabel med namnet - CUSTOMCONNSTR_<your-string-name>. Exempel:- CUSTOMCONNSTR_exampledb
- I filen application.properties refererar du till den här anslutningssträng med miljövariabelns namn. I vårt exempel använder vi följande kod: - app.datasource.url=${CUSTOMCONNSTR_exampledb}
Mer information finns i Spring Boot-dokumentationen om dataåtkomst och externaliserade konfigurationer.
Tips
Linux Tomcat-containrar kan automatiskt konfigurera delade datakällor åt dig på Tomcat-servern genom att ange miljövariabeln WEBSITE_AUTOCONFIGURE_DATABASE till true. Det enda du kan göra är att lägga till en appinställning som innehåller en giltig JDBC-anslutningssträng till en Oracle-, SQL Server-, PostgreSQL- eller MySQL-databas (inklusive autentiseringsuppgifterna för anslutning) och App Service lägger automatiskt till motsvarande delade databas till /usr/local/tomcat/conf/context.xml med hjälp av en lämplig drivrutin som är tillgänglig i containern. Ett scenario från slutpunkt till slutpunkt med den här metoden finns i Självstudie: Skapa en Tomcat-webbapp med Azure App Service på Linux och MySQL.
De här anvisningarna gäller för alla databasanslutningar. Du måste fylla platshållarna med den valda databasens drivrutinsklassnamn och JAR-fil. En tabell med klassnamn och drivrutiner för vanliga databaser tillhandahålls.
| Databas | Drivrutinsklassens namn | JDBC-drivrutin | 
|---|---|---|
| PostgreSQL | org.postgresql.Driver | Ladda ned | 
| MySQL (på engelska) | com.mysql.jdbc.Driver | Ladda ned (välj "Plattformsoberoende") | 
| SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver | Ladda ned | 
Om du först vill konfigurera Tomcat att använda Java Database Connectivity (JDBC) eller Java Persistence API (JPA), anpassar du miljövariabeln CATALINA_OPTS som Tomcat läser in vid start. Ange dessa värden via en appinställning i Plugin-programmet App Service Maven:
<appSettings>
    <property>
        <name>CATALINA_OPTS</name>
        <value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
    </property>
</appSettings>
Eller ange miljövariablerna på sidan Inställningar för konfigurationsprogram>i Azure Portal.
Bestäm sedan om datakällan ska vara tillgänglig för ett program eller för alla program som körs på Tomcat-servleten.
Datakällor på programnivå
Så här konfigurerar du en datakälla på programnivå:
- Skapa en context.xml fil i meta-INF/ -katalogen i projektet. Skapa meta-INF/-katalogen om den inte finns. 
- I context.xml lägger du till ett - Contextelement för att länka datakällan till en JNDI-adress. Ersätt- driverClassNamemed din drivrutins klassnamn från tabellen ovan.- <Context> <Resource name="jdbc/dbconnection" type="javax.sql.DataSource" url="${connURL}" driverClassName="<insert your driver class name>" username="${dbuser}" password="${dbpassword}" /> </Context>
- Uppdatera programmets web.xml för 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å
Tips
Linux Tomcat-containrar kan automatiskt tillämpa XSLT-filer med hjälp av följande konvention för filer som kopieras till /home/site/wwwroot: Om server.xml.xsl eller server.xml.xslt finns tillämpas de på Tomcats server.xml. Om context.xml.xsl eller context.xml.xslt är närvarande tillämpas de på Tomcats context.xml.
Om du lägger till en delad datakälla på servernivå måste du redigera Tomcats server.xml. Eftersom filändringar utanför /home katalogen är tillfälliga måste ändringar i Tomcats konfigurationsfiler tillämpas programatiskt enligt följande:
- Ladda upp ett startskript och ange sökvägen till skriptet i Konfiguration>Startkommando. Du kan ladda upp startskriptet med FTP.
Startskriptet gör en XSL-transformering till server.xml filen och matar ut den resulterande XML-filen till /usr/local/tomcat/conf/server.xml. Startskriptet bör installeras libxslt eller xlstproc beroende på distributionen av versionen av Tomcat för din webbapp. XSL-filen och startskriptet kan laddas upp via FTP. Nedan visas ett exempel på ett startskript.
# Install the libxslt package on Alpine-based images:
apk add --update libxslt
# Install the xsltproc package on Debian or Ubuntu-based images:
apt install xsltproc
# Also copy the transform file to /home/tomcat/conf/
# 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
I följande exempel lägger XSL-filen 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 Connector if there's 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's 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" 
               keystoreFile="${{user.home}}/.keystore" keystorePass="changeit"
               clientAuth="false" sslProtocol="TLS" />
  </xsl:template>
</xsl:stylesheet>
Slutför konfigurationen
Placera slutligen drivrutin-JAR-filerna i klassökvägen i Tomcat och starta om tjänsten App Service.
- Kontrollera att JDBC-drivrutinsfilerna är tillgängliga för Tomcat-klassladdaren genom att placera dem i katalogen /home/site/lib . 
              I Cloud Shell kör du az webapp deploy --type=libför varje drivrutins-JAR:
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <jar-name>.jar --type=lib --path <jar-name>.jar
Om du har skapat en datakälla på servernivå startar du om App Service Linux-programmet. Tomcat återställer CATALINA_BASE till /home/tomcat och använder den uppdaterade konfigurationen.
Tips
Som standard kan Linux JBoss-containrar automatiskt konfigurera delade datakällor åt dig på JBoss-servern. Det enda du kan göra är att lägga till en appinställning som innehåller en giltig JDBC-anslutningssträng till en Oracle-, SQL Server-, PostgreSQL- eller MySQL-databas (inklusive anslutningsautentiseringsuppgifterna) och lägga till variabeln WEBSITE_AUTOCONFIGURE_DATABASE Appinställning/Miljö med värdet true. JDBC-anslutningar som skapats med Service Connector stöds också. App Service lägger automatiskt till motsvarande delade datakälla (baserat på namnet på appinställningen och suffixet _DS), med hjälp av en lämplig drivrutin som är tillgänglig i containern. Ett scenario från slutpunkt till slutpunkt med den här metoden finns i Självstudie: Skapa en JBoss-webbapp med Azure App Service på Linux och MySQL.
Det finns tre grundläggande steg när du registrerar en datakälla med JBoss EAP:
- Ladda upp JDBC-drivrutinen.
- Lägg till JDBC-drivrutinen som en modul.
- Lägg till en datakälla med modulen.
App Service är en tillståndslös värdtjänst, så du måste placera de här stegen i ett startskript och köra det varje gång JBoss-containern startar. Använd PostgreSQL, MySQL och SQL Database som exempel:
Anmärkning
JBoss EAP på App Service stöder nu BYOL-fakturering (Bring Your Own License), vilket gör att kunder med befintliga Red Hat-prenumerationer kan tillämpa dessa licenser direkt på sina JBoss EAP-distributioner i Azure App Service. Läs mer.
- 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. I följande exempel visas JBoss CLI-kommandona för att skapa en PostgreSQL-datakälla med JNDI-namnet - java:jboss/datasources/postgresDS.- module add --name=org.postgresql --resources=/home/site/libs/postgresql-42.7.4.jar /subsystem=datasources/jdbc-driver=postgresql:add(driver-name="postgresql",driver-module-name="org.postgresql",driver-class-name="org.postgresql.Driver",driver-xa-datasource-class-name="org.postgresql.xa.PGXADataSource") data-source add --name=postgresql --driver-name="postgresql" --jndi-name="java:jboss/datasources/postgresDS" --connection-url="jdbc:postgresql://\${env.DB_HOST}:5432/postgres" --user-name="\${env.DB_USERNAME}" --password="\${env.DB_PASSWORD}" --enabled=true --use-java-context=true- Observera att - module addkommandot använder tre miljövariabler (- DB_HOST,- DB_USERNAME, och- DB_PASSWORD), som du måste lägga till i App Service som appinställningar. Skriptet lägger till dem utan- --resolve-parameter-valuesflaggan så att JBoss inte sparar sina värden i klartext.
- Skapa ett startskript, startup.sh, som anropar JBoss CLI-kommandona. I följande exempel visas hur du anropar din - jboss-cli-commands.cli. Senare konfigurerar du App Service för att köra det här skriptet när containern startar.- $JBOSS_HOME/bin/jboss-cli.sh --connect --file=/home/site/scripts/jboss_cli_commands.cli
- Med hjälp av ett distributionsalternativ laddar du upp JDBC-drivrutinen, jboss-cli-commands.cli och startup.sh till sökvägarna som anges i respektive skript. Ladda särskilt upp startup.sh som en startfil. Till exempel: - export RESOURCE_GROUP_NAME=<resource-group-name> export APP_NAME=<app-name> # The lib type uploads to /home/site/libs by default. az webapp deploy --resource-group $RESOURCE_GROUP_NAME --name $APP_NAME --src-path postgresql-42.7.4.jar --target-path postgresql-42.7.4.jar --type lib az webapp deploy --resource-group $RESOURCE_GROUP_NAME --name $APP_NAME --src-path jboss_cli_commands.cli --target-path /home/site/scripts/jboss_cli_commands.cli --type static # The startup type uploads to /home/site/scripts/startup.sh by default. az webapp deploy --resource-group $RESOURCE_GROUP_NAME --name $APP_NAME --src-path startup.sh --type startup- Mer information finns i Distribuera filer till App Service. 
För att bekräfta att datakällan har lagts till i JBoss-servern, SSH i webbappen och kör $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.
Som definierats av jboss-cli-commands.cli tidigare kan du komma åt PostgreSQL-anslutningen med hjälp av JNDI-namnet java:jboss/datasources/postgresDS.
Relaterat innehåll
Besök Azure for Java Developers Center för att hitta Azure-snabbstarter, självstudier och Java-referensdokumentation.