Aan de slag met het ontwikkelen in de cloud met behulp van Java op Azure
Dit artikel helpt u bij het instellen van een ontwikkelomgeving voor Azure-ontwikkeling in Java. Vervolgens maakt u enkele Azure-resources en maakt u er verbinding mee om enkele basistaken uit te voeren, zoals het uploaden van een bestand of het implementeren van een webtoepassing. Wanneer u klaar bent, kunt u Azure-services gaan gebruiken in uw eigen Java-toepassingen.
Vereisten
- Een Azure-account. Als u geen account hebt, kunt u een gratis proefversie krijgen.
- Azure Cloud Shell of Azure CLI 2.0.
- Java 8,dat is opgenomen in Azure Cloud Shell.
- Maven 3,dat is opgenomen in Azure Cloud Shell.
Verificatie instellen
Uw Java-toepassing heeft lees- en maakmachtigingen nodig in uw Azure-abonnement om de voorbeeldcode in deze zelfstudie uit te voeren. Maak een service-principal en configureer uw toepassing om te worden uitgevoerd met de referenties. Service-principals bieden een manier om een niet-actief account te maken dat is gekoppeld aan uw identiteit waaraan u alleen de bevoegdheden verleent die uw app moet uitvoeren.
Maak een service-principal met behulp van de Azure CLI 2.0en leg de uitvoer vast:
az ad sp create-for-rbac --name AzureJavaTest --role Contributor
Hiermee krijgt u een antwoord in de volgende indeling:
{
"appId": "a487e0c1-82af-47d9-9a0b-af184eb87646d",
"displayName": "AzureJavaTest",
"name": "http://AzureJavaTest",
"password": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt"
}
Configureer vervolgens de omgevingsvariabelen:
AZURE_SUBSCRIPTION_ID: Gebruik deAZURE_SUBSCRIPTION_IDaz account showvan in de Azure CLI 2.0.AZURE_CLIENT_ID: Gebruik deAZURE_CLIENT_IDuit de uitvoer van een service-principal-uitvoer.AZURE_CLIENT_SECRET: Gebruik deAZURE_CLIENT_SECRETuit de uitvoer van de service-principal.AZURE_TENANT_ID: Gebruik deAZURE_TENANT_IDuit de uitvoer van de service-principal.
Zie de Azure Identity-clientbibliotheekvoor Java voor meer verificatieopties.
Hulpprogramma's
Een nieuw Maven-project maken
Notitie
In dit artikel wordt het Hulpprogramma voor het bouwen van Maven gebruikt om de voorbeeldcode te bouwen en uit te voeren. Andere buildhulpprogramma's, zoals Gradle, werken ook met de Azure SDK voor Java.
Maak een Maven-project vanaf de opdrachtregel in een nieuwe map op uw systeem.
mkdir java-azure-test
cd java-azure-test
mvn archetype:generate -DgroupId=com.fabrikam -DartifactId=AzureApp \
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Met deze stap maakt u een eenvoudig Maven-project in de map testAzureApp. Voeg de volgende vermeldingen toe aan hetpom.xmlvan het project om de bibliotheken te importeren die worden gebruikt in de voorbeeldcode in deze zelfstudie.
<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>
Voeg een build vermelding toe onder het element op het hoogste niveau om de projectbuild te gebruiken om de voorbeelden uit te voeren.
<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>
De Azure Toolkit voor IntelliJ installeren
De Azure-toolkit is nodig als u web-apps of API's programmatisch wilt implementeren. Zie Azure Toolkit for IntelliJ (Azure Toolkit voor IntelliJ) vooreen quickstart met Azure Web Apps. Het bevat ook een uitgebreid SDK-referentieboek dat is ingesloten voor elke Azure-ontwikkeling met Java SDK. In de volgende stappen wordt het installatieproces samengevat.
- Selecteer het menu Bestand en selecteer vervolgens Instellingen.
- Selecteer Bladeren in opslagplaatsen,zoek naar Azure en installeer de Azure-toolkit voor Intellij.
- Start IntelliJ opnieuw op.
- Open een referentieboek van Tools - Azure - Azure > SDK Reference Book

De Azure-toolkit voor Eclipse installeren
De Azure-toolkit is nodig als u web-apps of API's programmatisch wilt implementeren. Deze wordt momenteel niet gebruikt voor andere soorten ontwikkeling. In de volgende stappen wordt het installatieproces samengevat. Zie Azure Toolkit voor Eclipse voor eenquickstart.
- Selecteer het menu Help en selecteer vervolgens Nieuwe software installeren.
- Voer in het vak Werken met in en selecteer Enter.
- Schakel het selectievakje naast Azure-toolkit voor Java in. Vink het selectievakje voor Contact opnemen met alle updatesites tijdens de installatie uit om de vereiste software te vinden. Selecteer vervolgens Volgende.
Een virtuele Linux-machine maken
Maak een nieuw bestand met de naam AzureApp.java in de map src/main/java/com/fabrikam van het project en plak het volgende codeblok. Werk de variabelen userName en sshKey bij met echte waarden voor uw machine. Met de code wordt een nieuwe virtuele Linux-machine (VM) gemaakt met de naam in de resourcegroep die testLinuxVM wordt uitgevoerd in de sampleResourceGroup Azure-regio US - oost.
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();
}
}
}
Voer het voorbeeld uit vanaf de opdrachtregel.
mvn compile exec:java
U ziet een aantal REST-aanvragen en -antwoorden in de console terwijl de SDK de onderliggende aanroepen naar de Azure-REST API om de VM en de resources ervan te configureren. Nadat het programma is uitgevoerd, controleert u de VM in uw abonnement met de Azure CLI 2.0.
az vm list --resource-group sampleVmResourceGroup
Nadat u hebt gecontroleerd of de code werkt, gebruikt u de CLI om de VM en de resources ervan te verwijderen.
az group delete --name sampleVmResourceGroup
Een web-app implementeren vanuit een GitHub-opslagplaats
Vervang de main-methode in AzureApp.java door de volgende. Werk de appName variabele bij naar een unieke waarde voordat u de code gaat uitvoeren. Met deze code wordt een webtoepassing van de vertakking master in een openbare GitHub-opslagplaats geïmplementeerd in een nieuwe master die wordt uitgevoerd in de gratis prijscategorie.
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();
}
}
Voer de code uit zoals voordat u Maven gebruikt.
mvn clean compile exec:java
Open een browser die naar de toepassing wijst met behulp van de CLI.
az webapp browse --resource-group sampleWebResourceGroup --name YOUR_APP_NAME
Verwijder de web-app en plan deze uit uw abonnement nadat u de implementatie hebt geverifieerd.
az group delete --name sampleWebResourceGroup
Verbinding maken met een Azure SQL-database
Vervang de huidige main-methode in AzureApp.java door de volgende code. Stel echte waarden in voor de variabelen.
Met deze code maakt u een SQL database met een firewallregel die externe toegang toestaat. Vervolgens maakt de code er verbinding mee met behulp van SQL Database JBDC-stuurprogramma.
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());
}
}
Voer het voorbeeld uit vanaf de opdrachtregel.
mvn clean compile exec:java
Schoon vervolgens de resources op met behulp van de CLI.
az group delete --name sampleSqlResourceGroup
Een blob naar een nieuw opslagaccount schrijven
Vervang de huidige main-methode in AzureApp.java door de volgende code. Met deze code maakt u een Azure-opslagaccount. Vervolgens gebruikt de code de Azure Storage voor Java om een nieuw tekstbestand te maken in de cloud.
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();
}
}
Voer het voorbeeld uit vanaf de opdrachtregel.
mvn clean compile exec:java
U kunt bladeren naar het helloazure.txt in uw opslagaccount via de Azure Portal of met Azure Storage Explorer.
Schoon het opslagaccount op met behulp van de CLI.
az group delete --name sampleStorageResourceGroup
Meer voorbeelden's verkennen
Zie onze voorbeeldcode voor virtuele machines,web-appsen SQL database voor meer informatie over het gebruik van de Azure-beheerbibliotheken voor Java voor het beheren van resources en het automatiseren van taken.
Referentie en opmerkingen bij de release
Een referentie is beschikbaar voor alle pakketten.
Hulp vragen en feedback geven
Stel vragen aan de community op Stack Overflow. Meld fouten en open problemen met de Azure SDK voor Java in de GitHub opslagplaats.