Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come configurare le origini dati in un'app Java SE, Tomcat o JBoss nel servizio app.
Servizio app di Azure esegue applicazioni Web Java in tre tipi in un servizio completamente gestito:
- Java Standard Edition (SE). Java SE può eseguire un'app distribuita come pacchetto di archivio Java (JAR) che contiene un server incorporato, ad esempio Spring Boot, Quarkus, Dropwizard o un'app con un server Tomcat o Jetty incorporato.
- Tomcat. Il server Tomcat predefinito può eseguire un'app distribuita come pacchetto WAR (Web Application Archive).
- JBoss Enterprise Application Platform (EAP): il server JBoss EAP predefinito può eseguire un'app distribuita come pacchetto EAR (WAR o enterprise archive). Questa opzione è supportata per le app Linux in un set di piani tariffari che includono Gratuito, Premium v3 e Isolato v2.
Annotazioni
JBoss EAP nel servizio app supporta ora la fatturazione BYOL (Bring Your Own License). BYOL consente ai clienti che hanno sottoscrizioni Red Hat esistenti di applicare tali licenze direttamente alle distribuzioni JBoss EAP nel servizio app di Azure. Per altre informazioni, vedere Supporto BYOL per JBoss EAP nel servizio app.
Configurare l'origine dati
Per connettersi alle origini dati nelle applicazioni Spring Boot, è consigliabile creare stringhe di connessione e inserirle nel file application.properties.
Nel riquadro sinistro della pagina Servizio app selezionare Impostazioni Variabili>di ambiente. Nella scheda Stringhe di connessione selezionare Aggiungi. Impostare un nome per la stringa, incollare la stringa di connessione JDBC nel campo Valore e impostare Tipo su Personalizzato. Facoltativamente, è possibile impostare la stringa di connessione come impostazione dello slot.
La stringa di connessione è accessibile all'applicazione come variabile di ambiente denominata
CUSTOMCONNSTR_<your-string-name>. Ad esempio:CUSTOMCONNSTR_exampledb.Nel file application.properties fare riferimento alla stringa di connessione con il nome della variabile di ambiente. Per l'esempio precedente, si userà questo codice:
app.datasource.url=${CUSTOMCONNSTR_exampledb}
Per altre informazioni, vedere la documentazione di Spring Boot sull'accesso ai dati e sulla configurazione esterna.
Suggerimento
I contenitori Tomcat linux possono configurare automaticamente le origini dati condivise nel server Tomcat se si imposta la variabile WEBSITE_AUTOCONFIGURE_DATABASE di ambiente su true. L'unica cosa da fare è aggiungere un'impostazione dell'app che contiene una stringa di connessione JDBC valida a un database Oracle, SQL Server, PostgreSQL o MySQL (incluse le credenziali di connessione). Il servizio app aggiunge automaticamente il database condiviso corrispondente a /usr/local/tomcat/conf/context.xml, usando un driver appropriato disponibile nel contenitore. Per uno scenario end-to-end che usa questo approccio, vedere Esercitazione: Creare un'app Web Tomcat con il servizio app di Azure in Linux e MySQL.
Queste istruzioni si applicano a tutte le connessioni di database. È necessario sostituire i segnaposto con il nome della classe driver del database scelto e il file JAR. Nella tabella seguente vengono forniti i nomi delle classi e i download dei driver per i database comuni.
| Banca dati | Nome della classe driver | driver JDBC |
|---|---|---|
| PostgreSQL | org.postgresql.Driver |
Scaricare |
| MySQL | com.mysql.jdbc.Driver |
Download (selezionare Platform Independent).) |
| SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver |
Scaricare |
Per configurare Tomcat per l'uso di Java Database Connectivity (JDBC) o JPA (Java Persistence API), personalizzare prima di tutto la CATALINA_OPTS variabile di ambiente letta da Tomcat all'avvio. Impostare questo valore usando un'impostazione dell'applicazione nel plug-in Maven di App Service:
<appSettings>
<property>
<name>CATALINA_OPTS</name>
<value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
</property>
</appSettings>
In alternativa, impostare la variabile di ambiente nella scheda Impostazioni dell'app della pagina Impostazioni>Variabili di ambiente nel portale di Azure.
Determinare quindi se l'origine dati deve essere disponibile per un'applicazione o per tutte le applicazioni in esecuzione nel servlet Tomcat.
Origini dati a livello di applicazione
Per configurare un'origine dati a livello di applicazione:
Creare un file context.xml nella directory META-INF/ del progetto. Creare la directory META-INF/, se non esiste.
In context-xml aggiungere un elemento
Contextper collegare l'origine dati a un indirizzo JNDI. Sostituire ildriverClassNamecon il nome della classe del driver dalla tabella che appare in precedenza in questo articolo.<Context> <Resource name="jdbc/dbconnection" type="javax.sql.DataSource" url="${connURL}" driverClassName="<insert your driver class name>" username="${dbuser}" password="${dbpassword}" /> </Context>Aggiorna il file web.xml della tua applicazione per usare l'origine dati nella tua applicazione.
<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>
Risorse a livello di server condiviso
Suggerimento
I contenitori Tomcat linux possono applicare automaticamente i file XSLT usando la convenzione seguente per i file copiati in /home/site/wwwroot: se server.xml.xsl o server.xml.xslt è presente, i file vengono applicati a Tomcat.server.xml Se context.xml.xsl o context.xml.xslt sono presenti, i file vengono applicati al componente context.xml di Tomcat.
Per aggiungere un'origine dati condivisa a livello di server, è necessario modificare il server.xml di Tomcat server.xml. Poiché le modifiche apportate ai file all'esterno della /home directory sono temporanee, le modifiche apportate ai file di configurazione di Tomcat devono essere applicate a livello di codice, come indicato di seguito:
- Caricare uno script di avvio e impostare il percorso dello script inConfigurazione>. Nella scheda Impostazioni stack aggiungere il percorso nella casella di comando Avvio . È possibile caricare lo script di avvio usando FTP.
Lo script di avvio crea una trasformazione XSL nel server.xml file e restituisce il file XML risultante in /usr/local/tomcat/conf/server.xml. Lo script di avvio deve installare libxslt o xlstproc, a seconda della distribuzione della versione di Tomcat dell'app Web, come indicato nel commento nello script di esempio seguente. È possibile usare FTP per caricare il file XSL e lo script di avvio.
# 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
Il file XSL di esempio seguente aggiunge un nuovo nodo connettore al server.xml Tomcat.
<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 is 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>
Completare la configurazione
Infine, posizionare i file JAR del driver nel classpath di Tomcat e riavviare l'app di App Service.
- Assicurarsi che i file driver JDBC siano disponibili per il caricatore di classe Tomcat inserendoli nella directory /home/site/lib. In Cloud Shell eseguire
az webapp deploy --type=libper ogni file JAR del driver:
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <jar-name>.jar --type=lib --path <jar-name>.jar
Se hai creato un'origine dati a livello di server, riavvia l'applicazione Linux dell'App Service. Tomcat reimposta CATALINA_BASE su /home/tomcat e usa la configurazione aggiornata.
Suggerimento
Per impostazione predefinita, i contenitori JBoss Linux possono configurare automaticamente le origini dati condivise nel server JBoss. L'unica cosa da fare è aggiungere un'impostazione dell'app contenente una stringa di connessione JDBC valida a un database Oracle, SQL Server, PostgreSQL o MySQL (incluse le credenziali di connessione) e aggiungere l'impostazione dell'app/variabile WEBSITE_AUTOCONFIGURE_DATABASE di ambiente con il valore true. Sono supportate anche le connessioni JDBC create con il connettore di servizi. Il servizio app aggiunge automaticamente l'origine dati condivisa corrispondente (in base al nome dell'impostazione dell'app e al suffisso _DS), usando un driver appropriato disponibile nel contenitore. Per uno scenario end-to-end che usa questo approccio, vedere Esercitazione: Creare un'app Web JBoss con il servizio app di Azure in Linux e MySQL.
Esistono tre passaggi principali per registrare un'origine dati con JBoss EAP:
- Caricare il driver JDBC.
- Aggiungere il driver JDBC come modulo.
- Aggiungere un'origine dati attraverso il modulo.
Il servizio app è un servizio di hosting senza stato, quindi è necessario inserire questi passaggi in uno script di avvio ed eseguirlo ogni volta che viene avviato il contenitore JBoss. Di seguito sono riportati esempi di Database SQL di PostgreSQL, MySQL e Azure:
Annotazioni
JBoss EAP nel servizio app supporta la fatturazione BYOL (Bring Your Own License). BYOL consente ai clienti che hanno sottoscrizioni Red Hat esistenti di applicare tali licenze direttamente alle distribuzioni JBoss EAP nel servizio app di Azure. Per altre informazioni, vedere Supporto BYOL per JBoss EAP.
Inserire i comandi dell'interfaccia della riga di comando di JBoss in un file denominato jboss-cli-commands.cli. I comandi JBoss devono aggiungere il modulo e registrarlo come origine dati. L'esempio seguente illustra i comandi CLI di JBoss per la creazione di un'origine dati PostgreSQL con il nome JNDI
java:jboss/datasources/postgresDS.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=trueSi noti che il
module addcomando usa tre variabili di ambiente (DB_HOST,DB_USERNAMEeDB_PASSWORD), che è necessario aggiungere in servizio app come impostazioni dell'app. Lo script li aggiunge senza il--resolve-parameter-valuesflag in modo che JBoss non salvi i valori in testo non crittografato.Creare uno script di avvio, startup.sh, che chiama i comandi dell'interfaccia della riga di comando di JBoss. L'esempio seguente illustra come chiamare il file jboss-cli-commands.cli . Successivamente, si configura il servizio app per eseguire questo script all'avvio del contenitore.
$JBOSS_HOME/bin/jboss-cli.sh --connect --file=/home/site/scripts/jboss-cli-commands.cliUsando un'opzione di distribuzione di propria scelta, caricare il driver JDBC, jboss-cli-commands.cli e startup.sh nei percorsi specificati nei rispettivi script. Caricare startup.sh come file di avvio. Ad esempio:
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 startupPer altre informazioni, vedere Distribuire l'app in Servizio app.
Per verificare che l'origine dati venga aggiunta al server JBoss, accedi alla tua app web tramite SSH ed esegui $JBOSS_HOME/bin/jboss-cli.sh --connect. Dopo aver eseguito la connessione a JBoss, eseguire /subsystem=datasources:read-resource per stampare un elenco delle origini dati.
Per la definizione in jboss-cli-commands.cli, è possibile accedere alla connessione PostgreSQL usando il nome java:jboss/datasources/postgresDSJNDI.
Contenuti correlati
- Documentazione di Azure per sviluppatori Java
- Domande frequenti sul Servizio App Linux
- Informazioni di riferimento sulle variabili di ambiente e impostazioni dell'app