Spring Data gebruiken met Azure Cosmos DB voor Apache Cassandra-API
In dit artikel wordt u begeleid bij het bouwen, configureren, implementeren, oplossen en schalen van Java-web-apps in Azure App Service onder Linux.
Het toont het gebruik van de volgende onderdelen:
Voorwaarden
De volgende vereisten zijn vereist om de stappen in dit artikel te volgen:
- Als u een Java-web-app wilt implementeren in de cloud, hebt u een Azure-abonnement nodig. Als u nog geen Azure-abonnement hebt, kunt u de voordelen van uw MSDN-abonnee activeren of u aanmelden voor een gratis Azure-account.
- Azure CLI 2.0
- Java 8 JDK
- Maven 3
Belangrijk
Spring Boot versie 2.5 of hoger is vereist om de stappen in dit artikel uit te voeren.
De voorbeeldopslagplaats voor Java-web-apps klonen
Voor deze oefening gebruikt u de Spring Todo-app, een Java-toepassing die is gebouwd met behulp van Spring Boot-, Spring Data voor Azure Cosmos DB en Azure Cosmos DB.
Kloon de Spring Todo-app en kopieer de inhoud van de map .prep om het project te initialiseren:
Voor bash:
git clone --recurse-submodules https://github.com/Azure-Samples/e2e-java-experience-in-app-service-linux-part-2.git yes | cp -rf .prep/* .
Voor Windows:
git clone --recurse-submodules https://github.com/Azure-Samples/e2e-java-experience-in-app-service-linux-part-2.git cd e2e-java-experience-in-app-service-linux-part-2 xcopy .prep /f /s /e /y
Wijzig het bestandspad naar de volgende map in de gekloonde opslagplaats:
cd initial\spring-todo-app
Een Azure Cosmos DB maken vanuit Azure CLI
Met de volgende procedure maakt u een Azure Cosmos DB-database met behulp van CLI.
Meld u aan bij uw Azure CLI en stel uw abonnements-id in.
az login
Stel indien nodig de abonnements-id in.
az account set -s <your-subscription-id>
Maak een Azure-resourcegroep en sla de naam van de resourcegroep op voor later gebruik.
az group create \ --name <your-azure-group-name> \ --location <your-resource-group-region>
Maak de Azure Cosmos DB en geef het type op als GlobalDocumentDB. De naam van de Azure Cosmos DB mag alleen kleine letters gebruiken. Noteer het
documentEndpoint
veld in het antwoord. U hebt deze waarde later nodig.az cosmosdb create \ --resource-group <your-resource-group-name> \ --name <your-azure-COSMOS-DB-name-in-lower-case-letters> \ --kind GlobalDocumentDB
Haal uw Azure Cosmos DB-sleutels op, noteer de
primaryMasterKey
waarde voor later gebruik.az cosmosdb keys list \ --resource-group <your-azure-group-name> \ --name <your-azure-COSMOSDB-name>
De app lokaal bouwen en uitvoeren
Met de volgende procedure wordt de toepassing uitgevoerd op de ontwikkelcomputer.
Configureer in de gewenste console de omgevingsvariabelen die worden weergegeven in de volgende codesecties met de Azure- en Azure Cosmos DB-verbindingsgegevens die u eerder in dit artikel hebt verzameld. U moet een unieke naam opgeven voor WEBAPP_NAME en waarde voor de REGION variabelen.
Voor Linux (Bash):
export COSMOS_URI=<put-your-COSMOS-DB-documentEndpoint-URI-here> export COSMOS_KEY=<put-your-COSMOS-DB-primaryMasterKey-here> export COSMOS_DATABASE=<put-your-COSMOS-DATABASE-name-here> export RESOURCEGROUP_NAME=<put-your-resource-group-name-here> export WEBAPP_NAME=<put-your-Webapp-name-here> export REGION=<put-your-REGION-here> export SUBSCRIPTION_ID=<put-your-SUBSCRIPTION_ID-here>
Voor Windows (opdrachtprompt):
set COSMOS_URI=<put-your-COSMOS-DB-documentEndpoint-URI-here> set COSMOS_KEY=<put-your-COSMOS-DB-primaryMasterKey-here> set COSMOS_DATABASE=<put-your-COSMOS-DATABASE-name-here> set RESOURCEGROUP_NAME=<put-your-resource-group-name-here> set WEBAPP_NAME=<put-your-Webapp-name-here> set REGION=<put-your-REGION-here> set SUBSCRIPTION_ID=<put-your-SUBSCRIPTION_ID-here>
Notitie
Als u deze variabelen wilt inrichten met een script, is er een sjabloon voor Bash in de map .prep die u als uitgangspunt kunt kopiëren en gebruiken.
Wijzig de map met behulp van de volgende opdracht:
cd initial/spring-todo-app
Voer de Spring Todo-app lokaal uit met de volgende opdracht:
mvn package spring-boot:run
Zodra de toepassing is gestart, kunt u de implementatie valideren door hier toegang te krijgen tot de Spring Todo-app:
http://localhost:8080/
.
Implementeren in App Service Linux
Met de volgende procedure wordt de toepassing geïmplementeerd in Linux in Azure.
Open het pom.xml bestand dat u eerder hebt gekopieerd naar de oorspronkelijke/spring-todo-app map van de opslagplaats. Zorg ervoor dat de Maven-invoegtoepassing voor Azure App Service- is opgenomen zoals te zien is in het volgende pom.xml bestand. Als de versie niet is ingesteld op 1.14.0, werkt u de waarde bij.
<plugins> <!--*************************************************--> <!-- Deploy to Java SE in App Service Linux --> <!--*************************************************--> <plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>1.14.0</version> <configuration> <schemaVersion>v2</schemaVersion> <subscriptionId>${SUBSCRIPTION_ID}</subscriptionId> <!-- Web App information --> <resourceGroup>${RESOURCEGROUP_NAME}</resourceGroup> <appName>${WEBAPP_NAME}</appName> <region>${REGION}</region> <pricingTier>P1v2</pricingTier> <!-- Java Runtime Stack for Web App on Linux--> <runtime> <os>Linux</os> <javaVersion>Java 8</javaVersion> <webContainer>Java SE</webContainer> </runtime> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.jar</include> </includes> </resource> </resources> </deployment> <appSettings> <property> <name>COSMOS_URI</name> <value>${COSMOS_URI}</value> </property> <property> <name>COSMOS_KEY</name> <value>${COSMOS_KEY}</value> </property> <property> <name>COSMOS_DATABASE</name> <value>${COSMOS_DATABASE}</value> </property> <property> <name>JAVA_OPTS</name> <value>-Dserver.port=80</value> </property> </appSettings> </configuration> </plugin> ... </plugins>
Uitrollen naar Java SE op App Service Linux
mvn azure-webapp:deploy
// Deploy bash-3.2$ mvn azure-webapp:deploy [INFO] Scanning for projects... [INFO] [INFO] -------< com.azure.spring.samples:spring-todo-app >-------- [INFO] Building spring-todo-app 2.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- azure-webapp-maven-plugin:1.14.0:deploy (default-cli) @ spring-todo-app --- Auth type: AZURE_CLI Default subscription: Consoto Subscription(subscription-id-xxx) Username: user@contoso.com [INFO] Subscription: Consoto Subscription(subscription-id-xxx) [INFO] Creating app service plan... [INFO] Successfully created app service plan asp-spring-todo-app. [INFO] Creating web app spring-todo-app... [INFO] Successfully created Web App spring-todo-app. [INFO] Trying to deploy artifact to spring-todo-app... [INFO] Successfully deployed the artifact to https://spring-todo-app.azurewebsites.net [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 02:05 min [INFO] Finished at: 2021-05-28T09:43:19+08:00 [INFO] ------------------------------------------------------------------------
Blader naar uw web-app die wordt uitgevoerd op Java SE in App Service Linux:
https://<WEBAPP_NAME>.azurewebsites.net
Problemen met Spring Todo-app in Azure oplossen door logboeken weer te geven
Met de volgende procedure worden logboekbestanden in Azure geopend.
Configureer logboeken voor de geïmplementeerde Java-web-app in Azure App Service in Linux:
az webapp log config \ --name ${WEBAPP_NAME} \ --resource-group ${RESOURCEGROUP_NAME} \ --web-server-logging filesystem
Open de externe logboekstream van de Java-web-app vanaf een lokale computer:
az webapp log tail \ --name ${WEBAPP_NAME} \ --resource-group ${RESOURCEGROUP_NAME}
bash-3.2$ az webapp log tail --name ${WEBAPP_NAME} --resource-group ${RESOURCEGROUP_NAME} 2021-05-28T01:46:08.000655632Z _____ 2021-05-28T01:46:08.000701432Z / _ \ __________ _________ ____ 2021-05-28T01:46:08.000708133Z / /_\ \___ / | \_ __ \_/ __ \ 2021-05-28T01:46:08.000711733Z / | \/ /| | /| | \/\ ___/ 2021-05-28T01:46:08.000714933Z \____|__ /_____ \____/ |__| \___ > 2021-05-28T01:46:08.000718233Z \/ \/ \/ 2021-05-28T01:46:08.000721333Z A P P S E R V I C E O N L I N U X 2021-05-28T01:46:08.000724233Z Documentation: http://aka.ms/webapp-linux ... ... 2021-05-28T01:46:18.925044188Z . ____ _ __ _ _ 2021-05-28T01:46:18.925481392Z /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ 2021-05-28T01:46:18.926004297Z ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 2021-05-28T01:46:18.926587603Z \\/ ___)| |_)| | | | | || (_| | ) ) ) ) 2021-05-28T01:46:18.926599403Z ' |____| .__|_| |_|_| |_\__, | / / / / 2021-05-28T01:46:18.926841806Z =========|_|==============|___/=/_/_/_/ 2021-05-28T01:46:18.931157849Z :: Spring Boot :: (v2.4.5) ... ... 2021-05-28T01:46:29.842553633Z 2021-05-28 01:46:29.842 INFO 124 --- [ main] c.azure.spring. samples.TodoApplication : Started TodoApplication in 12.635 seconds (JVM running for 17.664) 2021-05-28T01:46:30.477951594Z 2021-05-28 01:46:30.477 INFO 124 --- [p-nio-80-exec-1] o.a.c.c.C. [Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2021-05-28T01:46:30.483316162Z 2021-05-28 01:46:30.483 INFO 124 --- [p-nio-80-exec-1] o.s.web. servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2021-05-28T01:46:30.485411088Z 2021-05-28 01:46:30.484 INFO 124 --- [p-nio-80-exec-1] o.s.web. servlet.DispatcherServlet : Completed initialization in 0 ms 2021-05-28T01:47:19.683003828Z 2021-05-28 01:47:19.682 INFO 124 --- [p-nio-80-exec-9] c.a.s.s. controller.TodoListController : GET request access '/api/todolist' path. 2021-05-28T01:47:26.069984388Z 2021-05-28 01:47:26.069 INFO 124 --- [-nio-80-exec-10] c.a.s.s. controller.TodoListController : POST request access '/api/todolist' path with item: Milk 2021-05-28T01:47:26.649080678Z 2021-05-28 01:47:26.648 INFO 124 --- [p-nio-80-exec-1] c.a.s.s. controller.TodoListController : GET request access '/api/todolist' path.
De Spring Todo-app uitschalen
Gebruik de volgende procedure om de toepassing te schalen.
Java-web-app uitschalen met behulp van Azure CLI:
az appservice plan update \ --number-of-workers 2 \ --name ${WEBAPP_PLAN_NAME} \ --resource-group ${RESOURCEGROUP_NAME}
Volgende stappen
- Java in App Service Linux-ontwikkelaarshandleiding
- Azure voor Java-ontwikkelaars Voor meer informatie over Spring en Azure gaat u verder naar het Documentatiecentrum van Spring on Azure.
Zie ook
Zie de volgende artikelen voor meer informatie over het gebruik van Spring Boot-toepassingen in Azure:
Een Spring Boot-toepassing implementeren in Linux in Azure App Service
Een Spring Boot-toepassing uitvoeren op een Kubernetes-cluster in de Azure Container Service-
Zie de Azure voor Java-ontwikkelaars en de Werken met Azure DevOps en Javavoor meer informatie over het gebruik van Azure met Java.
De Spring Framework- is een opensource-oplossing waarmee Java-ontwikkelaars toepassingen op ondernemingsniveau kunnen maken. Een van de populairste projecten die op dat platform zijn gebouwd, is Spring Boot-, die een vereenvoudigde benadering biedt voor het maken van zelfstandige Java-toepassingen. Om ontwikkelaars te helpen aan de slag te gaan met Spring Boot, zijn er verschillende Spring Boot-voorbeeldpakketten beschikbaar op https://github.com/spring-guides/. Naast het kiezen uit de lijst met eenvoudige Spring Boot-projecten, helpt de Spring Initializr- ontwikkelaars aan de slag te gaan met het maken van aangepaste Spring Boot-toepassingen.