Azure'da Java'yı kullanarak bulutta uygulama geliştirmeye başlama
Bu makalede Java'da Azure geliştirmesi için bir geliştirme ortamı ayarlamaya yardımcı olur. Ardından bazı Azure kaynakları oluşturacağız ve dosya yükleme veya web uygulaması dağıtma gibi bazı temel görevleri gerçekleştirmek için bu kaynaklara bağlanabilirsiniz. Bitirdikten sonra Azure hizmetlerini kendi Java uygulamalarınıza kullanmaya başlayabilirsiniz.
Önkoşullar
- Azure hesabı. Yoksa ücretsiz deneme sürümüne sahipsiniz.
- Azure Cloud Shell veya Azure CLI 2.0.
- Java 8: Bu, Azure Cloud Shell.
- Maven 3: Bu, Azure Cloud Shell.
Kimlik doğrulamasını ayarlama
Java uygulamanızın bu öğreticideki kod örneğini çalıştırabilmesi için Azure aboneliğinizde okuma ve oluşturma izinlerine sahip olması gerekir. Bir hizmet sorumlusu oluşturun ve kimlik bilgileriyle çalıştıracak şekilde uygulamalarınızı yapılandırabilirsiniz. Hizmet sorumluları, kimliğinizle ilişkili, yalnızca uygulamanın çalışması için gereken ayrıcalıkları vermek için bir yorum olmayan hesap oluşturmanın bir yolunu sağlar.
Azure CLI 2.0kullanarak bir hizmet sorumlusu oluşturun ve çıkışı yakala:
az ad sp create-for-rbac --name AzureJavaTest --role Contributor
Size şu biçimde bir yanıt verir:
{
"appId": "a487e0c1-82af-47d9-9a0b-af184eb87646d",
"displayName": "AzureJavaTest",
"name": "http://AzureJavaTest",
"password": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt"
}
Ardından ortam değişkenlerini yapılandırabilirsiniz:
AZURE_SUBSCRIPTION_ID: AzureAZURE_SUBSCRIPTION_IDCLIaz account show2.0'daki kimlik değerini kullanın.AZURE_CLIENT_ID: Hizmet sorumlusu çıkışından alınanAZURE_CLIENT_IDdeğerini kullanın.AZURE_CLIENT_SECRET: HizmetAZURE_CLIENT_SECRETparola değerini kullanın.AZURE_TENANT_ID: HizmetAZURE_TENANT_IDkiracı değerini kullanın.
Daha fazla kimlik doğrulama seçeneği için bkz. Java için Azure Identity istemci kitaplığı.
Araçlar
Yeni bir Maven projesi oluşturma
Not
Bu makalede örnek kodu derlemek ve çalıştırmak için Maven derleme aracı lanmıştır. Gradle gibi diğer derleme araçları da Java için Azure SDK ile çalışır.
Sisteminiz üzerinde yeni bir dizinde komut satırıyla bir Maven projesi oluşturun.
mkdir java-azure-test
cd java-azure-test
mvn archetype:generate -DgroupId=com.fabrikam -DartifactId=AzureApp \
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Bu adım testAzureApp dizini altında temel bir Maven projesi oluşturur. Bu öğreticideki örnek kodda kullanılan kitaplıkları içeripom.xml için aşağıdaki girdileri projeninpom.xmldosyasına ekleyin.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.azure.resourcemanager</groupId>
<artifactId>azure-resourcemanager</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
<version>12.8.0</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.2.1.jre8</version>
</dependency>
Örnekleri çalıştırmak build için projectbuild öğesini kullanmak üzere üst düzey öğesinin altına bir giriş ekleyin.
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<mainClass>com.fabrikam.AzureApp</mainClass>
</configuration>
</plugin>
</plugins>
</build>
Azure Toolkit for Intellij'i yükleme
Web uygulamalarını veya API'leri program aracılığıyla dağıtmayı planlıyorsanız Azure araç seti gereklidir. Azure Web Apps ile hızlı başlangıç için bkz. Azure Toolkit for IntelliJ.. Ayrıca Java SDK'sı ile tüm Azure geliştirmeleri için eklenmiş kapsamlı bir SDK başvuru kitabına da sahip. Aşağıdaki adımlarda yükleme işlemi özetlenmiştir.
- Dosya menüsünü ve ardından Dosya'Ayarlar.
- Depolara göz at'ıseçin, ardından Azure'da arama ve Azure toolkit for Intellij'i yükleyin.
- Intellij'i yeniden başlatın.
- Araçlardan başvuru kitabını açma - Azure - Azure SDK Başvuru > Kitabı

Azure Toolkit for Eclipse'i yükleme
Web uygulamalarını veya API'leri program aracılığıyla dağıtmayı planlıyorsanız Azure araç seti gereklidir. Şu anda başka bir geliştirme türü için kullanılmamektedir. Aşağıdaki adımlarda yükleme işlemi özetlenmiştir. Hızlı başlangıç için bkz. Azure Toolkit for Eclipse.
- Yardım menüsünü ve ardından Yeni yazılım yükle'yi seçin.
- Birlikte çalış kutusuna yazın ve Enter tarak seçin.
- Java için Azure araç seti'nin yanındaki onay kutusunu seçin. Gerekli yazılımı bulmak için yükleme sırasında tüm güncelleştirme sitelerine başvur onay kutusunu temizleyin. Sonra İleri’yi seçin.
Linux sanal makinesi oluşturma
Projenin src/main/java/com/fabrikam dizininde AzureApp.java adlı yeni bir dosya oluşturun ve aşağıdaki kod bloğuna yapıştırın. userName ve sshKey değişkenlerinin yerine makinenizin gerçek değerlerini yazın. Kod, Azure bölgesinde çalışan kaynak grubunda adı olan yeni bir Linux sanal testLinuxVMsampleResourceGroup ABD Doğu oluşturur.
package com.fabrikam;
import com.azure.core.credential.TokenCredential;
import com.azure.core.http.policy.HttpLogDetailLevel;
import com.azure.core.management.AzureEnvironment;
import com.azure.core.management.Region;
import com.azure.core.management.profile.AzureProfile;
import com.azure.identity.AzureAuthorityHosts;
import com.azure.identity.EnvironmentCredentialBuilder;
import com.azure.resourcemanager.AzureResourceManager;
import com.azure.resourcemanager.compute.models.KnownLinuxVirtualMachineImage;
import com.azure.resourcemanager.compute.models.VirtualMachine;
import com.azure.resourcemanager.compute.models.VirtualMachineSizeTypes;
public class AzureApp {
public static void main(String[] args) {
final String userName = "YOUR_VM_USERNAME";
final String sshKey = "YOUR_PUBLIC_SSH_KEY";
try {
TokenCredential credential = new EnvironmentCredentialBuilder()
.authorityHost(AzureAuthorityHosts.AZURE_PUBLIC_CLOUD)
.build();
// If you don't set the tenant ID and subscription ID via environment variables,
// change to create the Azure profile with tenantId, subscriptionId, and Azure environment.
AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
AzureResourceManager azureResourceManager = AzureResourceManager.configure()
.withLogLevel(HttpLogDetailLevel.BASIC)
.authenticate(credential, profile)
.withDefaultSubscription();
// Create an Ubuntu virtual machine in a new resource group.
VirtualMachine linuxVM = azureResourceManager.virtualMachines().define("testLinuxVM")
.withRegion(Region.US_EAST)
.withNewResourceGroup("sampleVmResourceGroup")
.withNewPrimaryNetwork("10.0.0.0/24")
.withPrimaryPrivateIPAddressDynamic()
.withoutPrimaryPublicIPAddress()
.withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS)
.withRootUsername(userName)
.withSsh(sshKey)
.withUnmanagedDisks()
.withSize(VirtualMachineSizeTypes.STANDARD_D3_V2)
.create();
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
Örneği komut satırdan çalıştırın.
mvn compile exec:java
SDK VM'yi ve kaynaklarını yapılandırmak için Azure REST API çağrıları yaparken konsolda bazı REST isteklerini ve yanıtlarını bulabilirsiniz. Program tamam olduktan sonra Azure CLI 2.0 ile aboneliğinizin vm'sini doğrulayın.
az vm list --resource-group sampleVmResourceGroup
Kodun çalıştığını doğruladıktan sonra CLI'yi kullanarak VM'yi ve kaynaklarını silin.
az group delete --name sampleVmResourceGroup
GitHub deposundan web uygulaması dağıtma
içinde main yöntemini AzureApp.java aşağıdakiyle değiştirin. Kodu appName çalıştırmadan önce değişkeni benzersiz bir değere güncelleştirin. Bu kod genel GitHub deposundaki master dalından ücretsiz fiyatlandırma katmanında çalışan yeni bir master bir web uygulaması dağıtır.
public static void main(String[] args) {
try {
final String appName = "YOUR_APP_NAME";
TokenCredential credential = new EnvironmentCredentialBuilder()
.authorityHost(AzureAuthorityHosts.AZURE_PUBLIC_CLOUD)
.build();
// If you don't set the tenant ID and subscription ID via environment variables,
// change to create the Azure profile with tenantId, subscriptionId, and Azure environment.
AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
AzureResourceManager azureResourceManager = AzureResourceManager.configure()
.withLogLevel(HttpLogDetailLevel.BASIC)
.authenticate(credential, profile)
.withDefaultSubscription();
WebApp app = azureResourceManager.webApps().define(appName)
.withRegion(Region.US_WEST2)
.withNewResourceGroup("sampleWebResourceGroup")
.withNewWindowsPlan(PricingTier.FREE_F1)
.defineSourceControl()
.withPublicGitRepository(
"https://github.com/Azure-Samples/app-service-web-java-get-started")
.withBranch("master")
.attach()
.create();
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
Maven'ı kullanmadan önce kodu olduğu gibi çalıştırın.
mvn clean compile exec:java
CLI kullanarak uygulamaya işaret eden bir tarayıcı açın.
az webapp browse --resource-group sampleWebResourceGroup --name YOUR_APP_NAME
Dağıtımı doğruladıktan sonra web uygulamasını ve planı aboneliğinden kaldırın.
az group delete --name sampleWebResourceGroup
Azure SQL veritabanına bağlanma
içinde geçerli main yöntemini AzureApp.java aşağıdaki kodla değiştirin. Değişkenler için gerçek değerler ayarlayın.
Bu kod, uzaktan erişime SQL güvenlik duvarı kuralıyla yeni bir veritabanı oluşturur. Ardından kod, JBDC sürücüsünü kullanarak SQL Veritabanı bağlanır.
public static void main(String args[])
{
// Create the db using the management libraries.
try {
TokenCredential credential = new EnvironmentCredentialBuilder()
.authorityHost(AzureAuthorityHosts.AZURE_PUBLIC_CLOUD)
.build();
// If you don't set the tenant ID and subscription ID via environment variables,
// change to create the Azure profile with tenantId, subscriptionId, and Azure environment.
AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
AzureResourceManager azureResourceManager = AzureResourceManager.configure()
.withLogLevel(HttpLogDetailLevel.BASIC)
.authenticate(credential, profile)
.withDefaultSubscription();
final String adminUser = "YOUR_USERNAME_HERE";
final String sqlServerName = "YOUR_SERVER_NAME_HERE";
final String sqlDbName = "YOUR_DB_NAME_HERE";
final String dbPassword = "YOUR_PASSWORD_HERE";
final String firewallRuleName = "YOUR_RULE_NAME_HERE";
SqlServer sampleSQLServer = azureResourceManager.sqlServers().define(sqlServerName)
.withRegion(Region.US_EAST)
.withNewResourceGroup("sampleSqlResourceGroup")
.withAdministratorLogin(adminUser)
.withAdministratorPassword(dbPassword)
.defineFirewallRule(firewallRuleName)
.withIpAddressRange("0.0.0.0","255.255.255.255")
.attach()
.create();
SqlDatabase sampleSQLDb = sampleSQLServer.databases().define(sqlDbName).create();
// Assemble the connection string to the database.
final String domain = sampleSQLServer.fullyQualifiedDomainName();
String url = "jdbc:sqlserver://"+ domain + ":1433;" +
"database=" + sqlDbName +";" +
"user=" + adminUser+ "@" + sqlServerName + ";" +
"password=" + dbPassword + ";" +
"encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;";
// Connect to the database, create a table, and insert an entry into it.
Connection conn = DriverManager.getConnection(url);
String createTable = "CREATE TABLE CLOUD ( name varchar(255), code int);";
String insertValues = "INSERT INTO CLOUD (name, code ) VALUES ('Azure', 1);";
String selectValues = "SELECT * FROM CLOUD";
Statement createStatement = conn.createStatement();
createStatement.execute(createTable);
Statement insertStatement = conn.createStatement();
insertStatement.execute(insertValues);
Statement selectStatement = conn.createStatement();
ResultSet rst = selectStatement.executeQuery(selectValues);
while (rst.next()) {
System.out.println(rst.getString(1) + " "
+ rst.getString(2));
}
} catch (Exception e) {
System.out.println(e.getMessage());
System.out.println(e.getStackTrace().toString());
}
}
Örneği komut satırdan çalıştırın.
mvn clean compile exec:java
Ardından CLI kullanarak kaynakları temizleyin.
az group delete --name sampleSqlResourceGroup
Yeni depolama hesabına blob yazma
içinde geçerli main yöntemini AzureApp.java aşağıdaki kodla değiştirin. Bu kod bir Azure depolama hesabı oluşturur. Ardından kod, bulutta yeni Depolama oluşturmak için Java için Azure Depolama kitaplıklarını kullanır.
public static void main(String[] args) {
try {
TokenCredential tokenCredential = new EnvironmentCredentialBuilder()
.authorityHost(AzureAuthorityHosts.AZURE_PUBLIC_CLOUD)
.build();
// If you don't set the tenant ID and subscription ID via environment variables,
// change to create the Azure profile with tenantId, subscriptionId, and Azure environment.
AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
AzureResourceManager azureResourceManager = AzureResourceManager.configure()
.withLogLevel(HttpLogDetailLevel.BASIC)
.authenticate(tokenCredential, profile)
.withDefaultSubscription();
// Create a new storage account.
String storageAccountName = "YOUR_STORAGE_ACCOUNT_NAME_HERE";
StorageAccount storage = azureResourceManager.storageAccounts().define(storageAccountName)
.withRegion(Region.US_WEST2)
.withNewResourceGroup("sampleStorageResourceGroup")
.create();
// Create a storage container to hold the file.
List<StorageAccountKey> keys = storage.getKeys();
PublicEndpoints endpoints = storage.endPoints();
String accountName = storage.name();
String accountKey = keys.get(0).value();
String endpoint = endpoints.primary().blob();
StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey);
BlobServiceClient storageClient =new BlobServiceClientBuilder()
.endpoint(endpoint)
.credential(credential)
.buildClient();
// Container name must be lowercase.
BlobContainerClient blobContainerClient = storageClient.getBlobContainerClient("helloazure");
blobContainerClient.create();
// Make the container public.
blobContainerClient.setAccessPolicy(PublicAccessType.CONTAINER, null);
// Write a blob to the container.
String fileName = "helloazure.txt";
String textNew = "Hello Azure";
BlobClient blobClient = blobContainerClient.getBlobClient(fileName);
InputStream is = new ByteArrayInputStream(textNew.getBytes());
blobClient.upload(is, textNew.length());
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
Örneği komut satırdan çalıştırın.
mvn clean compile exec:java
Depolama hesabınızla veya helloazure.txt kullanarak Azure portal dosyasına göz Azure Depolama Gezgini.
CLI kullanarak depolama hesabını temizleyin.
az group delete --name sampleStorageResourceGroup
Diğer örnekleri keşfedin
Kaynakları yönetmek ve görevleri otomatikleştirmek için Java için Azure yönetim kitaplıklarını kullanma hakkında daha fazla bilgi edinmek için sanal makineler,webuygulamaları ve veritabanı için örnek SQL bakın.
Başvuru ve sürüm notları
Tüm paketler için bir başvuru mevcuttur.
Yardım alın ve geri bildirimde bulunun
Stack Overflow ile topluluğa soru sorabilirsiniz. GitHub deposunda Java için Azure SDK'sı ile ilgili hataları GitHub.