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.

Aplikace Azure Služba spouští webové aplikace Java v plně spravované službě ve třech variantách:

  • Java SE – Může spustit aplikaci nasazenou jako balíček JAR, který obsahuje vložený server (například Spring Boot, Dropwizard, Quarkus nebo jeden s vloženým serverem Tomcat nebo Jetty).
  • Tomcat – Integrovaný server Tomcat může spustit aplikaci nasazenou jako balíček WAR.
  • JBoss EAP – Podporuje se jenom pro linuxové aplikace v cenových úrovních Free, Premium v3 a Isolated v2. Integrovaný server JBoss EAP může spustit aplikaci nasazenou jako balíček WAR nebo EAR.

Poznámka:

Pro aplikace Spring doporučujeme používat Azure Spring Apps. Službu Aplikace Azure však můžete použít jako cíl. Rady najdete v pokynech k cíli úloh v Javě.

Konfigurace zdroje dat

Pokud se chcete připojit ke zdrojům dat v aplikacích Spring Boot, doporučujeme vytvořit připojovací řetězec 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 tuto připojovací řetězec nastavit jako nastavení slotu.

    Tato 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 na tento připojovací řetězec odkazujte s názvem 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.

Tip

Ve výchozím nastavení můžou kontejnery Linux Tomcat automaticky konfigurovat sdílené zdroje dat na serveru Tomcat. Jediné, co je potřeba udělat, je přidat nastavení aplikace, které obsahuje platné připojovací řetězec JDBC do databáze Oracle, SQL Server, PostgreSQL nebo MySQL (včetně přihlašovacích údajů připojení) a App Service automaticky přidá odpovídající sdílenou databázi do /usr/local/tomcat/conf/context.xml pomocí příslušného ovladače dostupného v kontejneru. Kompletní scénář s použitím tohoto přístupu najdete v tématu Kurz: Vytvoření webové aplikace Tomcat se službou Aplikace Azure 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 Nastavení konfigurační>aplikace na webu Azure Portal.

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

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

  2. V context.xml přidejte Context prvek pro propojení zdroje dat s adresou JNDI. driverClassName Nahraďte zástupný symbol názvem třídy 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 web.xml aplikace tak, aby používala zdroj 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

Přidání sdíleného zdroje dat na úrovni serveru vyžaduje úpravu server.xml tomcat. Nejspolehlivější způsob, jak to udělat, je následující:

  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 souboru server.xml a výstup výsledného souboru XML do /usr/local/tomcat/conf/server.xml. Spouštěcí skript by měl nainstalovat knihovnu libxslt prostřednictvím apk. Váš soubor xsl a spouštěcí skript lze nahrát přes FTP. Níže je uveden příklad spouštěcího skriptu.

# 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

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 jar ovladače do cesty k třídě Tomcat a restartujte službu 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 se resetuje CATALINA_BASE /home/tomcat a používá aktualizovanou konfiguraci.

Tip

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 do databáze 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ílený zdroj dat 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 Aplikace Azure 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:

  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_USERNAMEDB_HOSTa DB_PASSWORD), které musíte přidat do app Service jako nastavení aplikace. Skript je přidá bez příznaku, aby JBoss neuložil své hodnoty do prostého --resolve-parameter-values 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 je definováno jboss-cli-commands.cli dříve, můžete přistupovat k připojení PostgreSQL pomocí názvu java:jboss/datasources/postgresDSJNDI .

Další kroky

Navštivte centrum pro vývojáře v Azure pro Javu a najděte referenční dokumentaci k Azure pro rychlý start, kurzy a referenční dokumentaci k Javě.