共用方式為


使用 Azure Redis 作為 WebSphere Liberty 或 Open Liberty 的會話快取

本文說明如何使用 Azure Redis 作為 WebSphere Liberty 或 Open Liberty 的 HTTP 會話快取。

在本指南中,您將:

  • 建立 Azure 受控 Redis 實例作為會話快取。
  • 準備一個範例應用程式以實現 HTTP 會話的持續性。
  • 在本機執行範例應用程式。

本文旨在協助您快速進行部署。 在進入生產環境之前,您應該先探索Liberty 的調整(英文)。

若您有興趣提供意見或與開發 Azure 上 WebSphere 解決方案的工程團隊緊密合作,以處理您的移轉情境,請填寫這份簡短的 WebSphere 移轉問卷,並附上您的聯絡資訊。 專案經理、結構設計師和工程師組成的小組會立即連絡您,以展開緊密合作。

必要條件

  • Azure 訂用帳戶。 如果您還沒有 Azure 訂用帳戶,請在開始之前建立一個免費帳戶。
  • 準備一台安裝有類 Unix 作業系統的本機電腦,例如 Ubuntu、macOS 或 Windows Subsystem for Linux。
  • 安裝 Java Standard Edition (SE)實作版本 17 或更高版本 - 例如,Microsoft 构建的 OpenJDK版本。
  • 安裝 Maven 3.9.8 或更高版本。
  • 確保已安裝 Git。

建立 Azure 受控 Redis 實例

Azure 受控 Redis 會根據 Redis Enterprise 軟體提供記憶體內部數據存放區。 使用下列步驟來建立 Azure 受控 Redis 實例,然後記下其連線資訊。 您稍後會使用這項資訊來設定範例應用程式。

  1. 依照 快速入門中的步驟建立 Azure 受控 Redis 實例:建立 Azure 受控 Redis 實例。 請仔細注意下列差異:

    1. 在 [建立 Redis 實例 ] 區段的步驟 3 中,您位於 [ 基本概念] 索引卷標上,選取支援 Azure 受控 Redis 的 快取 SKU。 本指南中,請選擇 平衡(適用於一般用途工作負載與標準效能需求)。 如需詳細資訊,請參閱 選擇正確的層

    2. [建立 Redis 實例] 區段的步驟 4 中,您在 [網路] 標籤的 [連線] 選項中,選取 [公用端點]。 使用本指南時,為了簡單起見,這是最佳選擇。 針對生產環境,您應該考慮使用 私人端點,以提高安全性。

    3. 建立 Redis 實例區段的步驟 5 中,在 [進階] 標籤頁上設定下列選項:

      • 針對 驗證,請啟用 存取金鑰驗證。 在使用本指南時,為了簡單起見,此選項是最佳選擇。 為了獲得最佳安全性,建議您盡可能使用 Microsoft Entra ID 搭配受控身份來授權對快取的存取要求。 使用 Microsoft Entra 識別碼和受控識別進行授權,可提供優於共用存取密鑰授權的安全性與使用便利性。 如需搭配快取使用受控識別的詳細資訊,請參閱 使用 Microsoft Entra ID 進行快取驗證

      • 叢集原則 設定為 的企業,以適用於非叢集快取。這適用於本指南中使用的單一節點組態。 如需詳細資訊,請參閱 企業上的叢集。

  2. 部署完成之後,如果您在 部署 頁面上,請選取 移至資源。 否則,請流覽至 Azure 入口網站,尋找並選取您的 Azure 受控 Redis 實例。

  3. 在 [概觀] 頁面上,記下 端點 值。 您稍後會在 REDIS_CACHE_ADDRESS 環境變數中使用此值。

  4. 依序選取 [設定]>[驗證]。 選取 [存取金鑰] 並記錄 [主要數值]。 您稍後會使用此值作為 REDIS_CACHE_KEY 環境變數。

  5. 使用下列命令匯出環境變數 REDIS_CACHE_ADDRESSREDIS_CACHE_KEY

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

準備範例應用程式

WebSphere Liberty 和 Open Liberty 提供會話快取功能,可讓您將 HTTP 會話資料儲存在外部快取中。 在本指南中,您會使用 JCache 會話持續性 功能,將會話數據儲存在 Azure 受控 Redis 實例中。

使用下列命令來複製本指南的範例程序代碼。 此範例位於 GitHub 的 open-liberty-on-aks 存放庫中。 存放庫中有幾個範例。 本文使用 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

如果您看到有關處於 detached HEAD 狀態的訊息,這個訊息可以忽略。 這表示您查看了標籤。

應用程式具有下列檔案結構:

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

pom.xml 檔案是 Maven 項目檔,其中包含範例應用程式的相依性和外掛程式。

pom-redisson.xml 檔案可用來稍後將 Re比森用戶端連結庫的相依性複製到 Liberty 伺服器的共用資源目錄。

javaresourceswebapp 目錄包含範例應用程式的原始程式碼。

liberty/config 目錄中,server.xml 檔案可用來設定 Open Liberty 和 WebSphere Liberty 的 HTTP 會話快取。

redisson 目錄中,redisson-config.yaml 檔案用於設定到 Azure 受控 Redis 實例的連線。

docker 目錄包含兩個 Dockerfiles。 Dockerfile 可用來使用 Open Liberty 建置映像檔,而 Dockerfile-wlp 則用來建置 WebSphere Liberty 的映像檔。

在本機執行範例應用程式

使用下列步驟在本機建置和執行範例應用程式。 以上步驟會使用 Maven 和 liberty-maven-plugin。 如需 liberty-maven-plugin的詳細資訊,請參閱 使用 Maven建置 Web 應用程式。

  1. 確認您本機複製的目前工作目錄是 java-app-jcache

  2. 執行 Maven 命令 mvn clean package 並封裝應用程式。

  3. 執行 mvn -Predisson validate,將 Redisson 配置文件複製到正確的目標位置。 此步驟還會將環境變數的值 REDIS_CACHE_ADDRESSREDIS_CACHE_KEY 插入到 redisson-config.yaml 檔案中,該檔案是由 server.xml 檔案所參考的。

  4. 執行 mvn dependency:copy-dependencies -f pom-redisson.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources,將 Redisson 客戶端庫及其依賴項複製到 Liberty 伺服器的共用資源目錄。

  5. 執行 Maven 命令 mvn liberty:dev 並啟動應用程式。 如果應用程式已成功啟動,您應該會在命令輸出中看到 The defaultServer server is ready to run a smarter planet.

    如果 Redis 連線成功,您應該會看到類似下面的輸出。

    [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
    

測試應用程式

開啟網頁瀏覽器至 http://localhost:9080,您應能看到應用程式首頁。

成功執行的 Java 自由應用程式螢幕快照。

新咖啡 窗體中,設定 [名稱][價格]的值,然後選取 [提交]。 應用程式會建立新的咖啡、保存它,並將 HTTP 會話儲存在 Azure 受控 Redis 實例中。

幾秒鐘後,您會看到新的咖啡顯示在數據表中,我們的咖啡

範例應用程式的螢幕截圖,顯示在應用程式的工作階段中建立並保存的新的咖啡。

若要示範可以從 Redis 取出工作階段資料,請使用 Ctrl+C 停止應用程式,並使用 mvn liberty:dev 命令重新啟動它。

然後,重新整理應用程式首頁。 您應該會在新增咖啡一節中看到相同的會話數據。 當您完成測試時,請停止應用程式。

將應用程式容器化

您可以選擇性地使用下列步驟,在容器中封裝和執行應用程式。 此範例應用程式提供兩個適用於 Open Liberty 和 WebSphere Liberty 的 Docker 檔案。 本指南使用適用於 Open Liberty 的 Dockerfile,但您可以遵循類似的步驟,使用適用於 WebSphere Liberty 的 Dockerfile。

  1. 安裝適用於您 OS 的 Docker。 如需詳細資訊,請參閱取得 Docker (英文)。

  2. 使用下列命令來建置 Docker 映射:

    docker build -t javaee-cafe-jcache:v1 -f src/main/docker/Dockerfile .
    
  3. 使用下列命令啟動 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
    

    容器啟動之後,您可以使用與不使用 Docker 在本機執行應用程式的步驟類似的步驟來測試它。

清除資源

若要避免 Azure 費用,您應該清除不必要的資源。 不再需要 Azure 受控 Redis 實例時,請尋找其資源組名,並從 Azure 入口網站刪除它。

如需詳細資訊,請參閱 刪除資源群組

下一步

您可以從本指南中使用的參考深入瞭解:

  • 使用 JCache 設定 Liberty 會話持久性
  • 雷迪森的 JCache 支援
  • Open Liberty Server Configuration

如果您要將範例應用程式部署至 Azure,請參考下列文章:

若要探索在 Azure 上執行 WebSphere 產品的選項,請參閱「在 Azure 上執行 WebSphere 產品系列有哪些方案?」