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.
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říkladCUSTOMCONNSTR_exampledb
.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
V adresáři META-INF/ projektu vytvořte soubor context.xml. Pokud neexistuje, vytvořte adresář META-INF/.
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>
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í:
- 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(., '<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>
Dokončení konfigurace
Nakonec umístěte jar ovladače do cesty k třídě 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 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:
- Nahrajte ovladač JDBC.
- Přidejte ovladač JDBC jako modul.
- 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:
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/postgresDS
JNDI .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_USERNAME
DB_HOST
aDB_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.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
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/postgresDS
JNDI .
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ě.