Sdílet prostřednictvím


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.

Služba Azure App Service provozuje webové aplikace Java na plně spravovanou službou ve třech verzích.

  • Java Standard Edition (SE): Může spustit aplikaci nasazenou jako balíček Java Archive (JAR), který obsahuje vložený server (například Spring Boot, Quarkus, Dropwizard nebo aplikaci 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). Podporováno pro aplikace pro Linux v sadě cenových úrovní, které zahrnují Free, Premium v3 a Isolated v2.gti.

Poznámka:

JBoss EAP ve službě App Service teď podporuje fakturaci byOL (Bring Your Own License), což zákazníkům se stávajícími předplatnými Red Hat umožňuje použít tyto licence přímo na nasazení EAP JBoss ve službě Azure App Service. Další informace.

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 části Konfigurace na stránce služby App Service nastavte název řetězce, vložte připojovací řetězec JDBC do pole hodnoty a nastavte typ na Vlastní. Volitelně můžete tento připojovací řetězec nastavit jako slotové nastavení.

    Tento připojovací řetězec je pro naš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 tento připojovací řetězec pomocí názvu proměnné prostředí. V našem příkladu bychom použili následující kód:

    app.datasource.url=${CUSTOMCONNSTR_exampledb}
    

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

Návod

Kontejnery Tomcat pro Linux mohou automaticky konfigurovat sdílené zdroje dat pro vás na serveru Tomcat nastavením proměnné 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í) a App Service automaticky přidá odpovídající sdílenou databázi do /usr/local/tomcat/conf/context.xmlpomocí příslušného ovladače dostupného v kontejneru. Kompletní scénář, který používá tento přístup, najdete v tématu Kurz: 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 vyplnit názvem třídy ovladače zvolené databáze a souborem JAR. Poskytuje se tabulka s názvy tříd a stahováním ovladačů 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 nezávislou platformu)
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í JPA (Java Persistence API), nejprve při spuštění přizpůsobte CATALINA_OPTS proměnnou prostředí, která je načtena tomcatem. Nastavte tyto hodnoty prostřednictvím 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ěnné prostředí na stránce Konfigurace>Nastavení aplikace v portálu Azure.

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 vašeho ovladače z výše uvedené tabulky.

    <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 jsou server.xml.xsl nebo server.xml.xslt k dispozici, budou použity na Tomcatův server.xml. Pokud jsou přítomny context.xml.xsl nebo context.xml.xslt, budou aplikovány na Tomcat's 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:

  1. Nahrajte spouštěcí skript a nastavte cestu ke skriptu v>konfiguračním spouštěcím příkazu. Spouštěcí skript můžete nahrát pomocí ftp.

Spouštěcí skript provede transformaci XSL do server.xml souboru a výstup výsledného souboru XML do /usr/local/tomcat/conf/server.xml. Spouštěcí skript by se měl nainstalovat libxslt nebo xlstproc v závislosti na distribuci verze Tomcat vaší webové aplikace. Váš soubor XSL a spouštěcí skript se dají nahrát přes FTP. Níže je uveden příklad spouštěcího skriptu.

# 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'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>&#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 soubor JAR ovladačů do classpathu Tomcat a restartujte App Service.

  1. 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 JBoss pro Linux můžou ve výchozím nastavení automaticky konfigurovat sdílené zdroje dat na serveru JBoss. 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ů připojení) a přidat nastavení aplikace / prostředí proměnnou WEBSITE_AUTOCONFIGURE_DATABASE s hodnotou true. Podporují se také připojení JDBC vytvořená pomocí konektoru Service Connector. 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 tématu Kurz: Vytvoření webové aplikace JBoss se službou Azure App Service v Linuxu a MySQL.

Při registraci zdroje dat v JBoss EAP existují tři základní kroky:

  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. Příklady použití PostgreSQL, MySQL a SQL Database:

Poznámka:

JBoss EAP ve službě App Service teď podporuje fakturaci byOL (Bring Your Own License), což zákazníkům se stávajícími předplatnými Red Hat umožňuje použít tyto licence přímo na nasazení EAP JBoss ve službě Azure App Service. Další informace.

  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 volat 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. Zejména 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 se zdroj dat přidal na server JBoss, připojte se přes SSH do webové aplikace a spusťte $JBOSS_HOME/bin/jboss-cli.sh --connect. Po připojení k JBoss spusťte /subsystem=datasources:read-resource příkaz pro tisk seznamu zdrojů dat.

Jak bylo dříve definováno v jboss-cli-commands.cli, můžete přistupovat k připojení PostgreSQL pomocí názvu JNDIjava:jboss/datasources/postgresDS.

Navštivte centrum Azure pro vývojáře v Javě, kde najdete rychlé starty, kurzy a referenční dokumentaci k Azure a Javě.