Konfigurace zdrojů dat pro aplikaci Tomcat, JBoss nebo Java SE ve službě Aplikace Azure Service

Tento článek ukazuje, jak nakonfigurovat zdroje dat v aplikaci Java SE, Tomcat nebo JBoss ve službě App Service.

Azure App Service spouští webové aplikace v Javě ve třech typech v plně spravované službě:

  • Java Standard Edition (SE). Java SE může spustit aplikaci nasazenou jako balíček java archivu (JAR), který obsahuje vložený server, jako je Spring Boot, Quarkus, Dropwizard nebo aplikace s vloženým serverem Tomcat nebo Jetty.
  • Tomcat. Integrovaný server Tomcat může spustit aplikaci nasazenou jako balíček archivu webových aplikací (WAR).
  • JBoss Enterprise Application Platform (EAP): Integrovaný server JBoss EAP může spustit aplikaci nasazenou jako balíček WAR nebo enterprise archive (EAR). Tato možnost je podporovaná pro linuxové aplikace v sadě cenových úrovní, mezi které patří Free, Premium v3 a Isolated v2.

Poznámka:

JBoss EAP ve službě App Service teď podporuje fakturaci přineste si vlastní licenci (BYOL). ByOL umožňuje zákazníkům, kteří mají stávající předplatná Red Hat, použít tyto licence přímo na nasazení JBoss EAP ve službě Azure App Service. Další informace najdete v tématu Podpora BYOL pro JBoss EAP ve službě App Service.

Konfigurace zdroje dat

Pokud se chcete připojit ke zdrojům dat v aplikacích Spring Boot, doporučujeme vytvořit připojovací řetězce a vložit je do souboru application.properties .

  1. V levém podokně stránky služby App Service vyberte Nastavení>Proměnné prostředí. Na kartě Připojovací řetězce vyberte Přidat. Nastavte název řetězce, vložte připojovací řetězec JDBC do pole Hodnota a nastavte Typ na Vlastní. Připojovací řetězec můžete volitelně nastavit jako nastavení slotu.

    Připojovací řetězec je pro vaši aplikaci přístupný jako proměnná prostředí s názvem CUSTOMCONNSTR_<your-string-name>. Například CUSTOMCONNSTR_exampledb.

  2. V souboru application.properties odkazujte na připojovací řetězec s názvem proměnné prostředí. V předchozím příkladu byste použili tento kód:

    app.datasource.url=${CUSTOMCONNSTR_exampledb}
    

Další informace najdete v dokumentaci Spring Bootu k přístupu k datům a externalizované konfiguraci.

Návod

Kontejnery Tomcat pro Linux mohou automaticky konfigurovat sdílené zdroje dat na serveru Tomcat, pokud nastavíte proměnnou WEBSITE_AUTOCONFIGURE_DATABASE prostředí na true. Jediné, co je potřeba udělat, je přidat nastavení aplikace, které obsahuje platný připojovací řetězec JDBC k databázi Oracle, SQL Server, PostgreSQL nebo MySQL (včetně přihlašovacích údajů pro připojení). App Service automaticky přidá odpovídající sdílenou databázi do souboru /usr/local/tomcat/conf/context.xmlpomocí příslušného ovladače, který je k dispozici v kontejneru. Ucelený scénář, který používá tento přístup, najdete v kurzu : Vytvoření webové aplikace Tomcat se službou Azure App Service v Linuxu a MySQL.

Tyto pokyny platí pro všechna připojení k databázi. Zástupné symboly musíte nahradit názvem třídy ovladače a souborem JAR zvolené databáze. Následující tabulka obsahuje názvy tříd a ovladače ke stažení pro běžné databáze.

Databáze Název třídy ovladače Ovladač JDBC
PostgreSQL org.postgresql.Driver Stáhnout
MySQL com.mysql.jdbc.Driver Stáhnout (Vybrat platformu nezávislou.)
SQL Server com.microsoft.sqlserver.jdbc.SQLServerDriver Stáhnout

Pokud chcete nakonfigurovat Tomcat tak, aby používala připojení k databázi Java (JDBC) nebo rozhraní JAVA Persistence API (JPA), nejprve při spuštění přizpůsobte CATALINA_OPTS proměnnou prostředí, která je načtena tomcatem. Tuto hodnotu nastavte pomocí nastavení aplikace v modulu plug-in App Service Maven:

<appSettings>
    <property>
        <name>CATALINA_OPTS</name>
        <value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
    </property>
</appSettings>

Nebo nastavte proměnnou prostředí na kartě Nastavení aplikace na stránce Nastavení>proměnných prostředí v Azure portálu.

Dále určete, jestli má být zdroj dat dostupný pro jednu aplikaci nebo pro všechny aplikace spuštěné na servletu Tomcat.

Zdroje dat na úrovni aplikace

Konfigurace zdroje dat na úrovni aplikace:

  1. V adresáři META-INF/ projektu vytvořte soubor context.xml. Pokud neexistuje, vytvořte adresář META-INF/ .

  2. V context.xmlpřidejte Context prvek pro propojení zdroje dat s adresou JNDI. Nahraďte zástupný symbol driverClassName názvem třídy ovladače z tabulky, která byla uvedena dříve v tomto článku.

    <Context>
        <Resource
            name="jdbc/dbconnection"
            type="javax.sql.DataSource"
            url="${connURL}"
            driverClassName="<insert your driver class name>"
            username="${dbuser}"
            password="${dbpassword}"
        />
    </Context>
    
  3. Aktualizujte v aplikaci položku web.xml k použití zdroje dat ve vaší aplikaci.

    <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>
    

Sdílené prostředky na úrovni serveru

Návod

Kontejnery Tomcat pro Linux mohou automaticky použít soubory XSLT pomocí následující konvence pro soubory zkopírované do /home/site/wwwroot: Pokud je server.xml.xsl nebo server.xml.xslt přítomen, soubory jsou aplikovány na Tomcat's server.xml. Pokud jsou context.xml.xsl nebo context.xml.xslt k dispozici, soubory se použijí na Tomcat context.xml.

Přidání sdíleného zdroje dat na úrovni serveru vyžaduje, abyste upravili soubor Tomcat.server.xml Vzhledem k tomu, že změny souborů mimo /home adresář jsou dočasné, je třeba změny konfiguračních souborů Tomcat použít programově, a to následujícím způsobem:

  • Nahrajte spouštěcí skript a nastavte cestu ke skriptu v konfiguraci nastavení>. Na kartě Nastavení stacku přidejte cestu do pole Spouštěcí příkaz . Spouštěcí skript můžete nahrát pomocí ftp.

Spouštěcí skript provede transformaci XSL na obsah souboru server.xml a výsledný soubor XML uloží do /usr/local/tomcat/conf/server.xml. Spouštěcí skript by se měl nainstalovat libxslt nebo xlstprocv závislosti na distribuci verze Tomcat vaší webové aplikace, jak je uvedeno v komentáři v následujícím ukázkovém skriptu. K nahrání souboru XSL a spouštěcího skriptu můžete použít FTP.

# 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

Následující příklad souboru XSL přidá nový uzel konektoru do 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(., '&lt;Connector') and
                                 (contains(., 'scheme=&quot;https&quot;') or
                                  contains(., &quot;scheme='https'&quot;))]">
    <xsl:value-of select="." disable-output-escaping="yes" />
  </xsl:template>

  <xsl:template match="Service[not(Connector[@scheme = 'https'] or
                                   comment()[contains(., '&lt;Connector') and
                                             (contains(., 'scheme=&quot;https&quot;') or
                                              contains(., &quot;scheme='https'&quot;))]
                                  )]
                      ">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()" mode="insertConnector" />
    </xsl:copy>
  </xsl:template>

  <!-- Add the new connector after the last existing connector 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'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>&#xa;</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>

Dokončení konfigurace

Nakonec umístěte JAR soubory ovladače do cesty ke třídám Tomcat a restartujte službu App Service.

  • Ujistěte se, že soubory ovladačů JDBC jsou k dispozici pro zavaděč tříd Tomcat jejich umístěním do adresáře /home/site/lib . V Cloud Shellu spusťte az webapp deploy --type=lib pro každý soubor JAR ovladače:
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <jar-name>.jar --type=lib --path <jar-name>.jar

Pokud jste vytvořili zdroj dat na úrovni serveru, restartujte aplikaci App Service Pro Linux. Tomcat resetuje CATALINA_BASE na /home/tomcat a používá aktualizovanou konfiguraci.

Návod

Kontejnery Linux JBoss můžou ve výchozím nastavení automaticky konfigurovat sdílené zdroje dat na serveru JBoss. Jediné, co musíte udělat, je přidat nastavení aplikace, které obsahuje platný připojovací řetězec JDBC k databázi Oracle, SQL Server, PostgreSQL nebo MySQL (včetně přihlašovacích údajů pro připojení) a přidat nastavení aplikace / proměnnou WEBSITE_AUTOCONFIGURE_DATABASE prostředí s hodnotou true. Také jsou podporována připojení JDBC vytvořená pomocí konektoru služby. App Service automaticky přidá odpovídající sdílený zdroj dat (na základě názvu nastavení aplikace a přípony _DS) pomocí příslušného ovladače dostupného v kontejneru. Kompletní scénář, který používá tento přístup, najdete v kurzu: Vytvoření webové aplikace JBoss pomocí Azure App Service v Linuxu a MySQL.

Existují tři hlavní kroky registrace zdroje dat v JBoss EAP:

  1. Nahrajte ovladač JDBC.
  2. Přidejte ovladač JDBC jako modul.
  3. Přidejte zdroj dat pomocí modulu.

App Service je bezstavová hostitelská služba, takže tyto kroky musíte umístit do spouštěcího skriptu a spustit ji při každém spuštění kontejneru JBoss. Tady jsou příklady PostgreSQL, MySQL a Azure SQL Database:

Poznámka:

JBoss EAP ve službě App Service podporuje fakturaci BYOL (použijte vlastní licenci). ByOL umožňuje zákazníkům, kteří mají stávající předplatná Red Hat, použít tyto licence přímo na nasazení JBoss EAP ve službě Azure App Service. Další informace naleznete v tématu Podpora BYOL pro JBoss EAP.

  1. Příkazy rozhraní příkazového řádku JBoss umístěte do souboru s názvem jboss-cli-commands.cli. Příkazy JBoss musí přidat modul a zaregistrovat ho jako zdroj dat. Následující příklad ukazuje příkazy rozhraní příkazového řádku JBoss pro vytvoření zdroje dat PostgreSQL s názvem java:jboss/datasources/postgresDSJNDI .

    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
    

    Všimněte si, že module add příkaz používá tři proměnné prostředí (DB_HOSTDB_USERNAMEa DB_PASSWORD), které musíte přidat do app Service jako nastavení aplikace. Skript je přidá bez příznaku --resolve-parameter-values, aby JBoss neuložil jejich hodnoty v prostém textu.

  2. Vytvořte spouštěcí skript startup.sh, který volá příkazy rozhraní příkazového řádku JBoss. Následující příklad ukazuje, jak spustit soubor jboss-cli-commands.cli. Později nakonfigurujete službu App Service tak, aby při spuštění kontejneru spustila tento skript.

    $JBOSS_HOME/bin/jboss-cli.sh --connect --file=/home/site/scripts/jboss-cli-commands.cli
    
  3. Pomocí možnosti nasazení podle vašeho výběru nahrajte ovladač JDBC, jboss-cli-commands.cli a startup.sh do cest zadaných v příslušných skriptech. Nahrajte startup.sh jako spouštěcí soubor. Příklad:

    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
    

    Další informace najdete v tématu Nasazení souborů do služby App Service.

Pokud chcete ověřit, že je zdroj dat přidaný na server JBoss, připojte se ke své webové aplikaci SSH a spusťte $JBOSS_HOME/bin/jboss-cli.sh --connect. Po připojení k JBoss spusťte /subsystem=datasources:read-resource tisk seznamu zdrojů dat.

Podle definice v jboss-cli-commands.cli můžete přistupovat k připojení PostgreSQL pomocí názvu JNDI java:jboss/datasources/postgresDS.