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:

Viktig

Spring Boot version 2.5 eller senare krävs för att slutföra stegen i den här artikeln.

Klona exempelrepositoryt för Java-applikationen

I den här övningen använder du Spring Todo-appen, som är ett Java program som skapats med hjälp av Spring Boot, Spring Data för Azure Cosmos DB och Azure Cosmos DB.

  1. 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
    
  2. Ändra katalogen till följande mapp på den klonade lagringsplatsen:

    cd initial\spring-todo-app
    

Skapa ett Azure Cosmos DB konto från Azure CLI

Följande procedur skapar ett Azure Cosmos DB konto med hjälp av Azure CLI.

  1. Logga in på Azure CLI och ange ditt prenumerations-ID.

    az login
    
  2. Ange prenumerations-ID:t om det behövs.

    az account set -s <your-subscription-id>
    
  3. Skapa en Azure resursgrupp och spara resursgruppens namn för senare användning.

    az group create \
        --name <your-azure-group-name> \
        --location <your-resource-group-region>
    
  4. Skapa Azure Cosmos DB-kontot och ange typen som GlobalDocumentDB. Namnet på Azure Cosmos DB-kontot får endast använda gemener. 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
    
  5. Hämta dina Azure Cosmos DB nycklar och registrera primaryMasterKey värdet för senare användning.

    az cosmosdb keys list \
        --resource-group <your-azure-group-name> \
        --name <your-azure-COSMOSDB-name>
    

Skapa och köra appen lokalt

Följande procedur kör programmet på utvecklingsdatorn.

  1. 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.

  2. Ändra katalogen med hjälp av följande kommando:

    cd initial/spring-todo-app
    
  3. Kör Spring Todo-appen lokalt med följande kommando:

    mvn package spring-boot:run
    
  4. När programmet startar kan du verifiera distributionen genom att komma åt Spring Todo-appen här: http://localhost:8080/.

    Spring-appen körs lokalt

Distribuera till App Service Linux

Följande procedur distribuerar programmet till Linux i Azure.

  1. Ö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.0 uppdaterar 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>
    
  2. 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] ------------------------------------------------------------------------
    
  3. Bläddra till din webbapp som körs på Java SE i App Service Linux:

    https://<WEBAPP_NAME>.azurewebsites.net
    

Spring-app som körs i App Service på Linux

Felsöka Spring Todo-appen i Azure genom att visa loggar

Följande procedur öppnar loggfiler i Azure.

  1. 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
    
  2. Ö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.

  1. 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

Se även

Mer information om hur du använder Spring Boot-program i Azure finns i följande artiklar:

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.