Använda Spring Data med Azure Cosmos DB för Apache Cassandra API
Den här artikeln beskriver hur du skapar, konfigurerar, distribuerar, felsöker och skalar Java-webbappar i Azure App Service i Linux.
Den visar användningen av följande komponenter:
Förutsättningar
Följande krav krävs för att följa stegen i den här artikeln:
- För att kunna distribuera en Java-webbapp till molnet behöver du en Azure-prenumeration. Om du inte redan har en Azure-prenumeration kan du aktivera dina MSDN-prenumerantförmåner eller registrera dig för ett kostnadsfritt Azure-konto.
- Azure CLI 2.0
- Java 8 JDK
- Maven 3
Viktig
Spring Boot version 2.5 eller senare krävs för att slutföra stegen i den här artikeln.
Klona Java Web App-exempellagringsplatsen
I den här övningen använder du Spring Todo-appen, som är ett Java-program som skapats med Spring Boot, Spring Data för Azure Cosmos DB och Azure Cosmos DB.
Klona Spring Todo-appen och kopiera innehållet i mappen .prep för att initiera projektet:
För bash:
git clone --recurse-submodules https://github.com/Azure-Samples/e2e-java-experience-in-app-service-linux-part-2.git yes | cp -rf .prep/* .
För 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
Ändra katalogen till följande mapp på den klonade lagringsplatsen:
cd initial\spring-todo-app
Skapa en Azure Cosmos DB från Azure CLI
Följande procedur skapar Azure Cosmos DB-databas med HJÄLP av CLI.
Logga in på Azure CLI och ange ditt prenumerations-ID.
az login
Ange prenumerations-ID:t om det behövs.
az account set -s <your-subscription-id>
Skapa en Azure-resursgrupp och spara resursgruppens namn åt sidan för senare användning.
az group create \ --name <your-azure-group-name> \ --location <your-resource-group-region>
Skapa Azure Cosmos DB och ange typen som GlobalDocumentDB. Namnet på Azure Cosmos DB måste skrivas med endast små bokstäver. Observera fältet
documentEndpoint
i svaret. Du behöver det här värdet senare.az cosmosdb create \ --resource-group <your-resource-group-name> \ --name <your-azure-COSMOS-DB-name-in-lower-case-letters> \ --kind GlobalDocumentDB
Hämta dina Azure Cosmos DB-nycklar, registrera värdet
primaryMasterKey
för senare användning.az cosmosdb keys list \ --resource-group <your-azure-group-name> \ --name <your-azure-COSMOSDB-name>
Skapa och kör appen lokalt
Följande procedur kör programmet på utvecklingsdatorn.
Konfigurera miljövariablerna som visas i följande kodavsnitt i valfri konsol med anslutningsinformationen för Azure och Azure Cosmos DB som du samlade in tidigare i den här artikeln. Du måste ange ett unikt namn för WEBAPP_NAME och värdet för variablerna REGION.
För 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>
För Windows (Kommandoprompt):
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>
Not
Om du vill etablera dessa variabler med ett skript finns det en mall för Bash i katalogen .prep som du kan kopiera och använda som utgångspunkt.
Ändra katalogen med hjälp av följande kommando:
cd initial/spring-todo-app
Kör Spring Todo-appen lokalt med följande kommando:
mvn package spring-boot:run
När programmet har startat kan du verifiera distributionen genom att gå till Spring Todo-appen här:
http://localhost:8080/
.
Distribuera till App Service Linux
Följande procedur distribuerar programmet till Linux i Azure.
Öppna filen pom.xml som du tidigare kopierade till initial/spring-todo-app katalogen i lagringsplatsen. Se till att Maven-pluginet för Azure App Service finns med i följande pom.xml-fil. Om versionen inte är inställd på 1.14.0uppdaterar du värdet.
<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>
Distribuera till Java SE i 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] ------------------------------------------------------------------------
Bläddra till din webbapp som körs på Java SE i App Service Linux:
https://<WEBAPP_NAME>.azurewebsites.net
Felsöka Spring Todo-appen i Azure genom att visa loggar
Följande procedur öppnar loggfiler i Azure.
Konfigurera loggar för den distribuerade Java-webbappen i Azure App Service i Linux:
az webapp log config \ --name ${WEBAPP_NAME} \ --resource-group ${RESOURCEGROUP_NAME} \ --web-server-logging filesystem
Öppna java-webbappens fjärrloggström från en lokal dator:
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.
Skala ut Spring Todo-appen
Använd följande procedur för att skala programmet.
Skala ut Java-webbappen med Azure CLI:
az appservice plan update \ --number-of-workers 2 \ --name ${WEBAPP_PLAN_NAME} \ --resource-group ${RESOURCEGROUP_NAME}
Nästa steg
- Java i App Service Linux utvecklingsguide
- Azure for Java Developers Om du vill veta mer om Spring och Azure fortsätter du till dokumentationscentret för Spring on Azure.
Se även
Mer information om hur du använder Spring Boot-program i Azure finns i följande artiklar:
Distribuera ett Spring Boot-program till Linux på Azure App Service
Köra ett Spring Boot-program på ett Kubernetes-kluster i Azure Container Service
Mer information om hur du använder Azure med Java finns i Azure for Java Developers och Working with Azure DevOps and Java.
Spring Framework- är en lösning med öppen källkod som hjälper Java-utvecklare att skapa program på företagsnivå. Ett av de mer populära projekten som bygger på den plattformen är Spring Boot, som ger en förenklad metod för att skapa fristående Java-program. För att hjälpa utvecklare att komma igång med Spring Boot finns flera Spring Boot-exempelpaket tillgängliga på https://github.com/spring-guides/. Förutom att välja från listan över grundläggande Spring Boot-projekt hjälper Spring Initializr utvecklare att komma igång med att skapa anpassade Spring Boot-program.