Condividi tramite


Uso di Azure Redis come cache di sessione per WebSphere Liberty o Open Liberty

Questo articolo descrive come usare Azure Redis come cache di sessione HTTP per WebSphere Liberty o Open Liberty.

In questa guida si apprenderà quanto segue:

  • Creare un'istanza di Redis gestita di Azure come cache di sessione.
  • Preparare un'applicazione di esempio che consente la persistenza delle sessioni HTTP.
  • Eseguire l'applicazione di esempio in locale.

Questo articolo è progettato per facilitare rapidamente la distribuzione. Prima di passare alla produzione, è consigliabile esplorare Tuning Liberty.

Se si è interessati a fornire commenti e suggerimenti o lavorare sugli scenari di migrazione in stretta collaborazione con il team di progettazione che sviluppa WebSphere nelle soluzioni di Azure, compilare questo breve sondaggio sulla migrazione di WebSphere e includere le informazioni di contatto. Il team di responsabili del programma, architetti e ingegneri si metterà immediatamente in contatto con l'utente per avviare una stretta collaborazione.

Prerequisiti

  • Una sottoscrizione di Azure. Se non hai una sottoscrizione di Azure, crea un account gratuito prima di iniziare.
  • Prepara un computer locale con un sistema operativo simile a Unix installato, ad esempio Ubuntu, Azure Linux, macOS, Sottosistema Windows per Linux.
  • Installare un'implementazione Java Standard Edition (SE) versione 17 o successiva, ad esempio build Microsoft di OpenJDK.
  • Installare Maven 3.9.8 o una versione successiva.
  • Assicurarsi che Git sia installato.

Creare un'istanza di Redis gestita di Azure

Azure Managed Redis offre un archivio dati in memoria basato sul software Redis Enterprise. Usare la procedura seguente per creare un'istanza di Redis gestita di Azure e prendere nota delle informazioni di connessione. Queste informazioni verranno usate in un secondo momento per configurare l'applicazione di esempio.

  1. Creare un'istanza di Redis gestita di Azure seguendo la procedura descritta in Avvio rapido: Creare un'istanza di Redis gestita di Azure. Tenere presenti le differenze seguenti:

    1. Al passaggio 3 della sezione Creare un'istanza di Redis, dove sei nella scheda Informazioni di base, selezionare un SKU della cache che supporta Azure Managed Redis. Per questa guida selezionare Bilanciato (per carichi di lavoro per utilizzo generico con requisiti di prestazioni tipici). Per altre informazioni, vedere Scelta del livello corretto.

    2. Al passaggio 4 della sezione Creare un'istanza di Redis, nella scheda Networking, per l'opzione Connettività, selezionare Public Endpoint. Questa opzione è la scelta migliore per semplicità quando si usa questa guida. Per la produzione, è consigliabile usare l'endpoint privato per una maggiore sicurezza.

    3. Al passaggio 5 della sezione Creare un'istanza di Redis, in cui ci si trova nella scheda avanzata, configurare le impostazioni seguenti:

      • Per autenticazione, abilitare l'autenticazione chiavi di accesso. Questa opzione è la scelta migliore per semplicità quando si usa questa guida. Per una sicurezza ottimale, è consigliabile usare l'ID Microsoft Entra con identità gestite per autorizzare le richieste nella cache, se possibile. L'autorizzazione tramite l'ID e le identità gestite di Microsoft Entra offre sicurezza e facilità d'uso superiori rispetto all'autorizzazione della chiave di accesso condiviso. Per altre informazioni sull'uso di identità gestite con la cache, vedere Usare l'ID Microsoft Entra per l'autenticazione della cache.

      • Impostare il criterio di clustering su Enterprise per una cache non clustered, che funziona per questa guida in cui viene utilizzata la configurazione a nodo singolo. Per altre informazioni, vedere Clustering in Enterprise.

  2. Al termine della distribuzione, selezionare Vai alla risorsa se si è nella pagina Distribuzione. In caso contrario, accedi al portale di Azure, trova e seleziona la tua istanza Azure Redis gestita.

  3. Nella pagina Panoramica, prendere nota del valore Endpoint. Questo valore viene usato nella variabile di ambiente REDIS_CACHE_ADDRESS in un secondo momento.

  4. Selezionare Impostazioni>Autenticazione. Selezionare Chiavi di accesso e prendere nota del valore primario. Questo valore viene usato come variabile di ambiente REDIS_CACHE_KEY in un secondo momento.

  5. Usare il comando seguente per esportare le variabili di ambiente REDIS_CACHE_ADDRESS e REDIS_CACHE_KEY:

    export REDIS_CACHE_ADDRESS=rediss://<your-redis-cache-endpoint>
    export REDIS_CACHE_KEY=<your-primary-access-key>
    

Preparare l'applicazione di esempio

WebSphere Liberty e Open Liberty offrono una funzionalità della cache di sessione che consente di archiviare i dati della sessione HTTP in una cache esterna. In questa guida, utilizzi la funzionalità di persistenza della sessione JCache per archiviare i dati della sessione nell'istanza di Redis gestita di Azure.

Usare i comandi seguenti per clonare il codice di esempio per questa guida. Il campione si trova nel repository open-liberty-on-aks su GitHub. Nel repository sono disponibili alcuni esempi. Questo articolo usa java-app-jcache.

git clone https://github.com/Azure-Samples/open-liberty-on-aks.git
cd open-liberty-on-aks
git checkout 20250228
cd java-app-jcache

Se viene visualizzato un messaggio relativo allo stato di detached HEAD, questo messaggio è sicuro da ignorare. Significa semplicemente che hai controllato un tag.

L'applicazione ha la struttura di file seguente:

java-app-jcache/
├── pom.xml
├── pom-redisson.xml
└── src
    └── main
        ├── docker
        │   ├── Dockerfile
        │   └── Dockerfile-wlp
        ├── java
        ├── liberty
        │   └── config
        │       └── server.xml
        ├── redisson
        │   └── redisson-config.yaml
        ├── resources
        └── webapp

Il file pom.xml è il file di progetto Maven che contiene le dipendenze e i plug-in per l'applicazione di esempio.

Il file pom-redisson.xml viene usato per copiare le dipendenze per la libreria client Redisson nella directory delle risorse condivise del server Liberty, in un secondo momento.

Le directory java, resources e webapp contengono il codice sorgente dell'applicazione di esempio.

Nella directory liberty/config viene usato il file server.xml per configurare la cache della sessione HTTP per Open Liberty e WebSphere Liberty.

Nella directory redisson, il file redisson-config.yaml viene usato per configurare la connessione all'istanza di Redis gestita di Azure.

La directory docker contiene due Dockerfiles. dockerfile viene usato per creare un'immagine con Open Liberty e dockerfile-wlp viene usata per creare un'immagine con WebSphere Liberty.

Eseguire l'applicazione di esempio in locale

Usare la procedura seguente per compilare ed eseguire l'applicazione di esempio in locale. Questi passaggi usano Maven e liberty-maven-plugin. Per altre informazioni sul liberty-maven-plugin, vedere Creazione di un'applicazione Web con Maven.

  1. Assicurati che la directory di lavoro corrente sia java-app-jcache nel clone locale.

  2. Eseguire il comando Maven mvn clean package e creare il pacchetto dell'applicazione.

  3. Eseguire mvn -Predisson validate per copiare il file di configurazione di Redisson nel percorso di destinazione corretto. Questo passaggio inserisce anche i valori delle variabili di ambiente REDIS_CACHE_ADDRESS e REDIS_CACHE_KEY nel file redisson-config.ya ml, a cui fa riferimento il file server.xml.

  4. Eseguire mvn dependency:copy-dependencies -f pom-redisson.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources per copiare la libreria client Redisson e le relative dipendenze nella directory delle risorse condivise del server Liberty.

  5. Eseguire il comando Maven mvn liberty:dev e avviare l'applicazione. Se l'applicazione è stata avviata correttamente, verrà visualizzato The defaultServer server is ready to run a smarter planet. nell'output del comando.

    Se la connessione Redis ha esito positivo, verrà visualizzato un output simile al seguente.

    [INFO] [err] [Default Executor-thread-3] INFO org.redisson.Version - Redisson 3.23.4
    [INFO] [err] [redisson-netty-2-7] INFO org.redisson.connection.pool.MasterPubSubConnectionPool - 1 connections initialized for redacted.<region>.redis.azure.net/<ip_address>:10000
    [INFO] [err] [redisson-netty-2-20] INFO org.redisson.connection.pool.MasterConnectionPool - 24 connections initialized for redacted.<region>.redis.azure.net/<ip_address>:10000
    

Testare l'applicazione

Aprire un Web browser per http://localhost:9080 e verrà visualizzata la home page dell'applicazione.

Screenshot dell'applicazione Java liberty eseguita correttamente.

Nel modulo Nuovo caffè impostare i valori per i campi Nome e Prezzoe quindi selezionare Invia. L'applicazione crea un nuovo caffè, la rende persistente e archivia anche la sessione HTTP nell'istanza di Redis gestita di Azure.

Dopo alcuni secondi, viene visualizzato il nuovo caffè visualizzato nella tabella I nostri caffè.

Screenshot of sample application showing new coffee created and persisted in the session of the application.Screenshot dell'applicazione di esempio che mostra il nuovo caffè creato e salvato in modo permanente nella sessione dell'applicazione.

Per dimostrare che i dati della sessione possono essere recuperati da Redis, usare CTRL+C per arrestare l'applicazione e riavviarla con il comando mvn liberty:dev.

Aggiornare quindi la home page dell'applicazione. Nella sezione Nuovo caffèverranno visualizzati gli stessi dati della sessione. Arrestare l'applicazione al termine del test.

Contenerizzare l'applicazione

Facoltativamente, è possibile creare un pacchetto ed eseguire l'applicazione in un contenitore attenendosi alla procedura seguente. L'applicazione di esempio fornisce due Dockerfile per Open Liberty e WebSphere Liberty. Questa guida usa il Dockerfile per Open Liberty, ma è possibile usare il Dockerfile per WebSphere Liberty seguendo passaggi simili.

  1. Installare Docker per il sistema operativo. Per altre informazioni, vedere Get Docker.

  2. Usare il comando seguente per compilare l'immagine Docker:

    docker build -t javaee-cafe-jcache:v1 -f src/main/docker/Dockerfile .
    
  3. Usare il comando seguente per avviare il contenitore Docker:

    docker run -it --rm \
       -p 9080:9080 \
       -e REDIS_CACHE_ADDRESS=${REDIS_CACHE_ADDRESS} \
       -e REDIS_CACHE_KEY=${REDIS_CACHE_KEY} \
       --mount type=bind,source=$(pwd)/target/liberty/wlp/usr/servers/defaultServer/redisson-config.yaml,target=/config/redisson-config.yaml \
       javaee-cafe-jcache:v1
    

    Dopo l'avvio del contenitore, è possibile testarlo usando passaggi simili a quelli usati per eseguire l'applicazione in locale senza Docker.

Pulire le risorse

Per evitare addebiti per Azure, è necessario eliminare le risorse non necessarie. Quando l'istanza di Redis gestita di Azure non è più necessaria, trova il nome del gruppo di risorse ed eliminalo attraverso il portale di Azure.

Per altre informazioni, vedere Eliminare gruppi di risorse.

Passaggi successivi

Per altre informazioni, vedere i riferimenti usati in questa guida:

Per distribuire l'applicazione di esempio in Azure, fare riferimento agli articoli seguenti:

Per esplorare le opzioni per eseguire i prodotti WebSphere su Azure, vedere Quali sono le soluzioni per eseguire la famiglia di prodotti WebSphere su Azure?