Adatforrások konfigurálása Tomcat-, JBoss- vagy Java SE-alkalmazásokhoz a Azure-alkalmazás Service-ben
Ez a cikk bemutatja, hogyan konfigurálhat adatforrásokat Egy Java SE, Tomcat vagy JBoss alkalmazásban az App Service-ben.
Azure-alkalmazás szolgáltatás Java-webalkalmazásokat futtat egy teljes körűen felügyelt szolgáltatáson három változatban:
- Java SE – Futtathat egy JAR-csomagként üzembe helyezett alkalmazást, amely beágyazott kiszolgálót (például Spring Bootot, Dropwizardot, Quarkust vagy beágyazott Tomcat- vagy Jetty-kiszolgálót) tartalmaz.
- Tomcat – A beépített Tomcat-kiszolgáló futtathat egy WAR-csomagként üzembe helyezett alkalmazást.
- JBoss EAP – Csak a Prémium v3 és az Izolált v2 tarifacsomagokban támogatott Linux-alkalmazások. A beépített JBoss EAP-kiszolgáló futtathat egy WAR- vagy EAR-csomagként üzembe helyezett alkalmazást.
Feljegyzés
Spring-alkalmazások esetén az Azure Spring Apps használatát javasoljuk. Azonban továbbra is használhatja a Azure-alkalmazás szolgáltatást célként. Tanácsért tekintse meg a Java számítási feladatok célhelyének útmutatását .
Az adatforrás konfigurálása
A Spring Boot-alkalmazások adatforrásaihoz való csatlakozáshoz javasoljuk, hogy hozzon létre kapcsolati sztring, és injektálja őket az application.properties fájlba.
Az App Service oldal "Konfiguráció" szakaszában adja meg a sztring nevét, illessze be a JDBC-kapcsolati sztring az értékmezőbe, és állítsa a típust "Egyéni" értékre. Ezt a kapcsolati sztring tetszés szerint pontbeállításként is beállíthatja.
Ez a kapcsolati sztring az alkalmazás számára elérhető egy környezeti változó néven
CUSTOMCONNSTR_<your-string-name>
. Például:CUSTOMCONNSTR_exampledb
.Az application.properties fájlban hivatkozzon erre a kapcsolati sztring a környezeti változó nevével. Példánkban a következő kódot használnánk:
app.datasource.url=${CUSTOMCONNSTR_exampledb}
További információ: Spring Boot-dokumentáció az adathozzáférésről és a külső konfigurációkról.
Tipp.
Alapértelmezés szerint a Linux Tomcat-tárolók automatikusan konfigurálhatják a megosztott adatforrásokat a Tomcat-kiszolgálón. Az egyetlen teendője egy olyan alkalmazásbeállítás hozzáadása, amely érvényes JDBC-kapcsolati sztring tartalmaz egy Oracle-, SQL Server-, PostgreSQL- vagy MySQL-adatbázishoz (beleértve a kapcsolati hitelesítő adatokat is), és az App Service automatikusan hozzáadja a coosql megosztott adatbázist a /usr/local/tomcat/conf/context.xml adatbázishoz a tárolóban elérhető megfelelő illesztőprogram használatával. Az ezzel a megközelítéssel használható, végpontok közötti forgatókönyvért tekintse meg a Következő oktatóanyagot: Tomcat-webalkalmazás létrehozása Azure-alkalmazás Szolgáltatással Linuxon és MySQL-en.
Ezek az utasítások az összes adatbázis-kapcsolatra vonatkoznak. A helyőrzőket ki kell töltenie a kiválasztott adatbázis illesztőprogram-osztálynevével és JAR-fájljával. A megadott táblázat osztályneveket és illesztőprogram-letöltéseket tartalmaz a gyakori adatbázisokhoz.
Adatbázis | Illesztőprogram-osztály neve | JDBC-illesztő |
---|---|---|
PostgreSQL | org.postgresql.Driver |
Letöltés |
MySQL | com.mysql.jdbc.Driver |
Letöltés (Válassza a "Platformfüggetlen" lehetőséget) |
SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver |
Letöltés |
Ahhoz, hogy a Tomcat a Java Database Connectivity (JDBC) vagy a Java Persistence API (JPA) használatára legyen konfigurálva, először szabja testre a CATALINA_OPTS
Tomcat által az indításkor beolvasott környezeti változót. Ezeket az értékeket az App Service Maven beépülő modul alkalmazásbeállításával állíthatja be:
<appSettings>
<property>
<name>CATALINA_OPTS</name>
<value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
</property>
</appSettings>
Vagy állítsa be a környezeti változókat az Azure Portal Konfigurációs>alkalmazás beállításai lapján.
Ezután állapítsa meg, hogy az adatforrásnak elérhetőnek kell-e lennie egy alkalmazásnak vagy a Tomcat servleten futó összes alkalmazásnak.
Alkalmazásszintű adatforrások
Hozzon létre egy context.xml fájlt a projekt META-INF/könyvtárában. Hozza létre a META-INF/ könyvtárat, ha nem létezik.
A context.xml adjon hozzá egy
Context
elemet az adatforrás JNDI-címhez való csatolásához. Cserélje le adriverClassName
helyőrzőt az illesztőprogram osztálynevére a fenti táblázatból.<Context> <Resource name="jdbc/dbconnection" type="javax.sql.DataSource" url="${connURL}" driverClassName="<insert your driver class name>" username="${dbuser}" password="${dbpassword}" /> </Context>
Frissítse az alkalmazás web.xml az adatforrás használatára az alkalmazásban.
<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>
Megosztott kiszolgálószintű erőforrások
Megosztott, kiszolgálószintű adatforrás hozzáadásához szerkesztenie kell a Tomcat server.xml. Ennek legmegbízhatóbb módja a következő:
- Töltsön fel egy indítási szkriptet, és állítsa be a szkript elérési útját a Configuration>Startup Commandben. Az indítási szkriptet FTP-vel töltheti fel.
Az indítási szkript xsl-átalakítást végez a server.xml fájlba, és az eredményként kapott XML-fájlt a következőre /usr/local/tomcat/conf/server.xml
alakítja. Az indítási szkriptnek telepítenie kell a libxsltet az APK-on keresztül. Az xsl-fájl és az indítási szkript FTP-vel tölthető fel. Az alábbiakban egy példa indítási szkript látható.
# 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
Az alábbi példa XSL-fájl egy új összekötő csomópontot ad hozzá a 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 Connnector 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>
Konfiguráció véglegesítése
Végül helyezze az illesztőprogram JARs-eit a Tomcat osztályútvonalra, és indítsa újra az App Service-t.
- Győződjön meg arról, hogy a JDBC-illesztőfájlok elérhetők a Tomcat-osztálybetöltő számára, ha a /home/site/lib könyvtárba helyezi őket. A Cloud Shellben futtassa
az webapp deploy --type=lib
az egyes illesztőprogramok JAR-jét:
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <jar-name>.jar --type=lib --path <jar-name>.jar
Ha kiszolgálószintű adatforrást hozott létre, indítsa újra az App Service Linux-alkalmazást. A Tomcat alaphelyzetbe áll CATALINA_BASE
, /home/tomcat
és a frissített konfigurációt használja.
Az adatforrás JBoss EAP-val való regisztrálása három alapvető lépésből áll: a JDBC-illesztőprogram feltöltése, a JDBC-illesztőprogram modulként való hozzáadása és a modul regisztrálása. Az App Service állapot nélküli üzemeltetési szolgáltatás, ezért az adatforrásmodul hozzáadására és regisztrálására szolgáló konfigurációs parancsokat a tároló indításakor szkripttel kell használni és alkalmazni.
Szerezze be az adatbázis JDBC-illesztőprogramját.
Hozzon létre egy XML-moduldefiníciós fájlt a JDBC-illesztőhöz. Az alábbi példa a PostgreSQL moduldefinícióját mutatja be.
<?xml version="1.0" ?> <module xmlns="urn:jboss:module:1.1" name="org.postgres"> <resources> <!-- ***** IMPORTANT : REPLACE THIS PLACEHOLDER *******--> <resource-root path="/home/site/deployments/tools/postgresql-42.2.12.jar" /> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
Helyezze a JBoss CLI-parancsokat egy nevű
jboss-cli-commands.cli
fájlba. A JBoss-parancsoknak hozzá kell adniuk a modult, és regisztrálniuk kell adatforrásként. Az alábbi példa a PostgreSQL JBoss CLI-parancsait mutatja be.#!/usr/bin/env bash module add --name=org.postgres --resources=/home/site/deployments/tools/postgresql-42.2.12.jar --module-xml=/home/site/deployments/tools/postgres-module.xml /subsystem=datasources/jdbc-driver=postgres:add(driver-name="postgres",driver-module-name="org.postgres",driver-class-name=org.postgresql.Driver,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource) data-source add --name=postgresDS --driver-name=postgres --jndi-name=java:jboss/datasources/postgresDS --connection-url=${POSTGRES_CONNECTION_URL,env.POSTGRES_CONNECTION_URL:jdbc:postgresql://db:5432/postgres} --user-name=${POSTGRES_SERVER_ADMIN_FULL_NAME,env.POSTGRES_SERVER_ADMIN_FULL_NAME:postgres} --password=${POSTGRES_SERVER_ADMIN_PASSWORD,env.POSTGRES_SERVER_ADMIN_PASSWORD:example} --use-ccm=true --max-pool-size=5 --blocking-timeout-wait-millis=5000 --enabled=true --driver-class=org.postgresql.Driver --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter --jta=true --use-java-context=true --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
Hozzon létre egy indítási szkriptet,
startup_script.sh
amely meghívja a JBoss CLI-parancsokat. Az alábbi példa bemutatja, hogyan hívhatja meg a sajátjátjboss-cli-commands.cli
. Később konfigurálja az App Service-t a szkript futtatására a tároló indításakor.$JBOSS_HOME/bin/jboss-cli.sh --connect --file=/home/site/deployments/tools/jboss-cli-commands.cli
Egy tetszőleges FTP-ügyfél használatával töltse fel a JDBC-illesztőt és
jboss-cli-commands.cli
startup_script.sh
a moduldefiníciót a következőre/site/deployments/tools/
: .Konfigurálja a webhelyet úgy, hogy a tároló indításakor fusson
startup_script.sh
. Az Azure Portalon lépjen az Általános beállítások konfigurációs>beállításainak>indítási parancsára. Állítsa be az indítási parancsmezőt a következőre/home/site/deployments/tools/startup_script.sh
: . Mentse a módosításokat.
Annak ellenőrzéséhez, hogy az adatforrás hozzá lett-e adva a JBoss-kiszolgálóhoz, az SSH-t a webalkalmazásba, és futtassa $JBOSS_HOME/bin/jboss-cli.sh --connect
. Miután csatlakozott a JBoss-hoz, futtassa a /subsystem=datasources:read-resource
elemet az adatforrások listájának nyomtatásához.
Következő lépések
Látogasson el az Azure for Java Fejlesztői központba az Azure rövid útmutatóihoz, oktatóanyagaihoz és Java-referenciadokumentációihoz.