Delen via


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:

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.

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

  1. Meld u aan bij uw Azure CLI en stel uw abonnements-id in.

    az login
    
  2. Stel indien nodig de abonnements-id in.

    az account set -s <your-subscription-id>
    
  3. 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>
    
  4. 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
    
  5. 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.

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

  2. Wijzig de map met behulp van de volgende opdracht:

    cd initial/spring-todo-app
    
  3. Voer de Spring Todo-app lokaal uit met de volgende opdracht:

    mvn package spring-boot:run
    
  4. Zodra de toepassing is gestart, kunt u de implementatie valideren door hier toegang te krijgen tot de Spring Todo-app: http://localhost:8080/.

    Spring-app die lokaal wordt uitgevoerd

Implementeren in App Service Linux

Met de volgende procedure wordt de toepassing geïmplementeerd in Linux in Azure.

  1. 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>
    
  2. 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] ------------------------------------------------------------------------
    
  3. Blader naar uw web-app die wordt uitgevoerd op Java SE in App Service Linux:

    https://<WEBAPP_NAME>.azurewebsites.net
    

Spring-app die wordt uitgevoerd in App Service in Linux

Problemen met Spring Todo-app in Azure oplossen door logboeken weer te geven

Met de volgende procedure worden logboekbestanden in Azure geopend.

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

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

Zie ook

Zie de volgende artikelen voor meer informatie over het gebruik van Spring Boot-toepassingen in Azure:

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.