Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, App Service'de bir Java SE, Tomcat veya JBoss uygulamasında veri kaynaklarının nasıl yapılandırılacağı gösterilmektedir.
Azure App Service, tam yönetilen bir hizmet üzerinde Java web uygulamalarını üç farklı şekilde çalıştırır.
- Java Standard Edition (SE): Eklenmiş bir sunucu (Spring Boot, Quarkus, Dropwizard gibi) içeren bir Java Arşivi (JAR) paketi olarak dağıtılan bir uygulamayı ya da katıştırılmış Tomcat veya Jetty sunucusuna sahip bir uygulamayı çalıştırabilir.
- Tomcat: Yerleşik Tomcat sunucusu, web uygulaması arşiv (WAR) paketi olarak dağıtılan bir uygulamayı çalıştırabilir.
- JBoss Kurumsal Uygulama Platformu (EAP): Yerleşik JBoss EAP sunucusu, WAR veya kurumsal arşiv (EAR) paketi olarak dağıtılan bir uygulamayı çalıştırabilir. Ücretsiz, Premium v3 ve Yalıtılmış v2.gti içeren bir dizi fiyatlandırma katmanında Linux uygulamaları için desteklenir
Uyarı
App Service'te JBoss EAP artık "Kendi Lisansını Getir" (KLG) faturalamasını destekliyor. Bu, mevcut Red Hat aboneliklerine sahip müşterilerin bu lisansları Doğrudan Azure App Service'te JBoss EAP dağıtımlarına uygulamasına olanak sağlıyor. Daha fazla bilgi edinin.
Veri kaynağını yapılandırma
Spring Boot uygulamalarındaki veri kaynaklarına bağlanmak için bağlantı dizeleri oluşturmanızı ve bunları application.properties dosyanıza eklemenizi öneririz.
App Service sayfasının "Yapılandırma" bölümünde, dize için bir ad ayarlayın, JDBC bağlantı dizenizi değer alanına yapıştırın ve türü "Özel" olarak ayarlayın. İsteğe bağlı olarak bu bağlantı dizesini yuva ayarı olarak ayarlayabilirsiniz.
Bu bağlantı dizesi, uygulamamız tarafından adlı
CUSTOMCONNSTR_<your-string-name>bir ortam değişkeni olarak erişilebilir. Örneğin,CUSTOMCONNSTR_exampledb.application.properties dosyanızda, ortam değişkeni adıyla bu bağlantı dizesine başvurun. Örneğimiz için aşağıdaki kodu kullanırız:
app.datasource.url=${CUSTOMCONNSTR_exampledb}
Daha fazla bilgi için veri erişimi ve dışsal yapılandırmalarlailgili Spring Boot belgelerine bakın.
Tavsiye
Linux Tomcat kapsayıcıları, ortam değişkenini WEBSITE_AUTOCONFIGURE_DATABASEtrueolarak ayarlayarak Tomcat sunucusunda paylaşılan veri kaynaklarını sizin için otomatik olarak yapılandırabilir. Yapmanız gereken tek şey, Oracle, SQL Server, PostgreSQL veya MySQL veritabanına (bağlantı kimlik bilgileri dahil) geçerli bir JDBC bağlantı dizesi içeren bir uygulama ayarı eklemektir ve App Service, kapsayıcıda bulunan uygun bir sürücüyü kullanarak ilgili paylaşılan veritabanını otomatik olarak /usr/local/tomcat/conf/context.xmlekler. Bu yaklaşımı kullanan uçtan uca bir senaryo için bkz: Öğretici: Linux ve MySQL üzerinde Azure App Service ile Tomcat web uygulaması oluşturma.
Bu yönergeler tüm veritabanı bağlantıları için geçerlidir. Yer tutucuları seçtiğiniz veritabanının sürücü sınıfı adı ve JAR dosyasıyla doldurmanız gerekir. Sağlanan, ortak veritabanları için sınıf adlarını ve sürücü indirmelerini içeren bir tablodur.
| Veritabanı | Sürücü Sınıfı Adı | JDBC Sürücüsü |
|---|---|---|
| PostgreSQL | org.postgresql.Driver |
İndirme |
| MySQL | com.mysql.jdbc.Driver |
İndir ("Platform Independent"ı seçin) |
| SQL Sunucusu | com.microsoft.sqlserver.jdbc.SQLServerDriver |
İndirme |
Tomcat'i Java Database Connectivity (JDBC) veya Java Persistence API (JPA) kullanacak şekilde yapılandırmak için önce başlangıçta Tomcat tarafından okunan ortam değişkenini CATALINA_OPTS özelleştirin. Bu değerleri App Service Maven eklentisindeki bir uygulama ayarı aracılığıyla ayarlayın:
<appSettings>
<property>
<name>CATALINA_OPTS</name>
<value>"$CATALINA_OPTS -Ddbuser=${DBUSER} -Ddbpassword=${DBPASSWORD} -DconnURL=${CONNURL}"</value>
</property>
</appSettings>
Alternatif olarak, Azure portal Yapılandırma>Uygulaması Ayarları sayfasında ortam değişkenlerini ayarlayın.
Ardından, veri kaynağının tek bir uygulama tarafından mı yoksa Tomcat servlet üzerinde çalışan tüm uygulamalar için mi kullanılabilir olması gerektiğini belirleyin.
Uygulama düzeyi veri kaynakları
Uygulama düzeyinde veri kaynağını yapılandırmak için:
Projenizin META-INF/ dizininde bir context.xml dosyası oluşturun. Yoksa META-INF/ dizinini oluşturun.
context.xmlbölümünde, veri kaynağını bir JNDI adresine bağlamak için bir
Contextöğe ekleyin. Yer tutucuyudriverClassNameyukarıdaki tabloda yer alan sürücünüzün sınıf adıyla değiştirin.<Context> <Resource name="jdbc/dbconnection" type="javax.sql.DataSource" url="${connURL}" driverClassName="<insert your driver class name>" username="${dbuser}" password="${dbpassword}" /> </Context>Uygulamanızdaki veri kaynağını kullanmak için uygulamanızın web.xml güncelleştirin.
<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>
Paylaşılan sunucu düzeyi kaynaklar
Tavsiye
Linux Tomcat kapsayıcıları, /home/site/wwwroot'e kopyalanan dosyalar için aşağıdaki yöntemi kullanarak XSLT dosyalarını otomatik olarak uygulayabilir: server.xml.xsl veya server.xml.xslt varsa, bunlar Tomcat'in server.xml öğesine uygulanır.
context.xml.xsl veya context.xml.xslt mevcutsa, Tomcat'in context.xml öğesine uygulanır.
Paylaşılan, sunucu düzeyinde bir veri kaynağı eklemek için Tomcat'in server.xmlöğesini düzenlemeniz gerekir. Dizin dışındaki /home dosya değişiklikleri kısa ömürlü olduğundan, Tomcat'in yapılandırma dosyalarındaki değişikliklerin programlı olarak uygulanması gerekir:
- Bir başlangıç komut dosyası yükleyin ve Yapılandırma>Başlangıç Komutu'nda komut dosyasının yolunu ayarlayın. Başlangıç komut dosyasını FTP kullanarak yükleyebilirsiniz.
Başlangıç betiğiniz libxslt veya xlstproc yüklemelidir . XSL dosyanız ve başlangıç betiğiniz FTP aracılığıyla karşıya yüklenebilir. Aşağıda örnek bir başlangıç komut dosyası verilmiştir.
# 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
Aşağıdaki örnek XSL dosyası, Tomcat server.xmlyeni bir bağlayıcı düğümü ekler.
<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>
Yapılandırmayı sonlandırın
Son olarak, sürücü JAR'larını Tomcat sınıf yoluna yerleştirin ve App Service'inizi yeniden başlatın.
- JDBC sürücü dosyalarını /home/site/lib dizinine yerleştirerek Tomcat sınıf yükleyicisi tarafından kullanılabilir olduğundan emin olun.
Cloud Shell'de her sürücü JAR için çalıştırın
az webapp deploy --type=lib:
az webapp deploy --resource-group <group-name> --name <app-name> --src-path <jar-name>.jar --type=lib --path <jar-name>.jar
Sunucu düzeyinde bir veri kaynağı oluşturduysanız, App Service Linux uygulamasını yeniden başlatın. Tomcat, güncelleştirilmiş yapılandırmaya CATALINA_BASE sıfırlanır /home/tomcat ve bu yapılandırmayı kullanır.
Tavsiye
Varsayılan olarak, Linux JBoss kapsayıcıları, JBoss sunucusunda sizin için paylaşılan veri kaynaklarını otomatik olarak yapılandırabilir. Tek yapmanız gereken Oracle, SQL Server, PostgreSQL veya MySQL veritabanına (bağlantı kimlik bilgileri dahil) geçerli bir JDBC bağlantı dizesi içeren bir Uygulama Ayarı eklemek ve değeriyle WEBSITE_AUTOCONFIGURE_DATABASEUygulama Ayarı / Ortam değişkenini true eklemektir. Hizmet Bağlayıcısı ile oluşturulan JDBC Bağlantıları da desteklenir. App Service, kapsayıcıda kullanılabilir uygun bir sürücü kullanarak, Uygulama Ayarı adının sonuna eklenen sonek temelinde ilgili paylaşılan veri kaynağını otomatik olarak ekler. Bu yaklaşımı kullanan uçtan uca bir senaryo için bkz: Öğretici: Linux ve MySQL üzerinde Azure App Service ile JBoss web uygulaması oluşturma.
JBoss EAP ile bir veri kaynağını kaydederken üç temel adım vardır:
- JDBC sürücüsünü yükleyin.
- JDBC sürücüsünü bir modül olarak ekleyin.
- Modülle bir veri kaynağı ekleyin.
App Service durum bilgisi olmayan bir barındırma hizmetidir, bu nedenle bu adımları bir başlangıç betiğine koymanız ve JBoss kapsayıcısı her başlatıldığında çalıştırmanız gerekir. PostgreSQL, MySQL ve SQL Veritabanı'nı örnek olarak kullanma:
Uyarı
App Service'te JBoss EAP artık "Kendi Lisansını Getir" (KLG) faturalamasını destekliyor. Bu, mevcut Red Hat aboneliklerine sahip müşterilerin bu lisansları Doğrudan Azure App Service'te JBoss EAP dağıtımlarına uygulamasına olanak sağlıyor. Daha fazla bilgi edinin.
JBoss CLI komutlarınızı jboss-cli-commands.cli adlı bir dosyaya yerleştirin. JBoss komutlarının modülü eklemesi ve veri kaynağı olarak kaydetmesi gerekir. Aşağıdaki örnek, JNDI adıyla
java:jboss/datasources/postgresDSbir PostgreSQL veri kaynağı oluşturmak için JBoss CLI komutlarını gösterir.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=trueKomutun, App Service'e
module adduygulama ayarları olarak eklemeniz gereken üç ortam değişkeni (DB_HOST,DB_USERNAME, veDB_PASSWORD) kullandığını unutmayın. Komut dosyası bunları bayrak olmadan ekler,--resolve-parameter-valuesböylece JBoss değerlerini düz metin olarak kaydetmez.JBoss CLI komutlarını çağıran bir başlangıç betiği (startup.sh) oluşturun. Aşağıdaki örnek, .
jboss-cli-commands.cliDaha sonra, kapsayıcı başlatıldığında App Service'i bu betiği çalıştıracak şekilde yapılandıracaksınız.$JBOSS_HOME/bin/jboss-cli.sh --connect --file=/home/site/scripts/jboss_cli_commands.cliTercih ettiğiniz bir dağıtım seçeneğini kullanarak, JDBC sürücünüzü, jboss-cli-commands.cli ve startup.sh ilgili betiklerde belirtilen yollara yükleyin. Özellikle, startup.sh bir başlangıç dosyası olarak yükleyin. Örneğin:
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 startupDaha fazla bilgi için bkz . App Service'e dosya dağıtma.
Veri kaynağının JBoss sunucusuna eklendiğini onaylamak için web uygulamanıza SSH ekleyin ve çalıştırın $JBOSS_HOME/bin/jboss-cli.sh --connect. JBoss'a bağlandıktan sonra, veri kaynaklarının bir listesini yazdırmak için çalıştırın /subsystem=datasources:read-resource .
Daha önce jboss-cli-commands.cli tarafından tanımlandığı gibi, JNDI adını java:jboss/datasources/postgresDSkullanarak PostgreSQL bağlantısına erişebilirsiniz.
İlgili içerik
Java Geliştiricileri için Azure merkezini ziyaret ederek Azure hızlı başlangıçlarını, eğitimlerini ve Java referans belgelerini bulabilirsiniz.