Megosztás a következőn keresztül:


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.

  1. 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évenCUSTOMCONNSTR_<your-string-name>. Például: CUSTOMCONNSTR_exampledb.

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

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

  2. A context.xml adjon hozzá egy Context elemet az adatforrás JNDI-címhez való csatolásához. Cserélje le a driverClassName 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>
    
  3. 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ő:

  1. 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.xmlalakí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(., '&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 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>&#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>

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.

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

  1. Szerezze be az adatbázis JDBC-illesztőprogramját.

  2. 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>
    
  3. Helyezze a JBoss CLI-parancsokat egy nevű jboss-cli-commands.clifá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
    
  4. 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át jboss-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
    
  5. Egy tetszőleges FTP-ügyfél használatával töltse fel a JDBC-illesztőt és jboss-cli-commands.clistartup_script.sha moduldefiníciót a következőre/site/deployments/tools/: .

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