使用 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 實例,然後記下其連線資訊。 您稍後會使用這項資訊來設定範例應用程式。
依照 快速入門中的步驟建立 Azure 受控 Redis 實例:建立 Azure 受控 Redis 實例。 請仔細注意下列差異:
在 [建立 Redis 實例 ] 區段的步驟 3 中,您位於 [ 基本概念] 索引卷標上,選取支援 Azure 受控 Redis 的 快取 SKU。 本指南中,請選擇 平衡(適用於一般用途工作負載與標準效能需求)。 如需詳細資訊,請參閱 選擇正確的層。
在 [建立 Redis 實例] 區段的步驟 4 中,您在 [網路] 標籤的 [連線] 選項中,選取 [公用端點]。 使用本指南時,為了簡單起見,這是最佳選擇。 針對生產環境,您應該考慮使用 私人端點,以提高安全性。
在 建立 Redis 實例區段的步驟 5 中,在 [進階] 標籤頁上設定下列選項:
針對 驗證,請啟用 存取金鑰驗證。 在使用本指南時,為了簡單起見,此選項是最佳選擇。 為了獲得最佳安全性,建議您盡可能使用 Microsoft Entra ID 搭配受控身份來授權對快取的存取要求。 使用 Microsoft Entra 識別碼和受控識別進行授權,可提供優於共用存取密鑰授權的安全性與使用便利性。 如需搭配快取使用受控識別的詳細資訊,請參閱 使用 Microsoft Entra ID 進行快取驗證。
將 叢集原則 設定為 的企業,以適用於非叢集快取。這適用於本指南中使用的單一節點組態。 如需詳細資訊,請參閱 企業上的叢集。
部署完成之後,如果您在 部署 頁面上,請選取 移至資源。 否則,請流覽至 Azure 入口網站,尋找並選取您的 Azure 受控 Redis 實例。
在 [概觀] 頁面上,記下 端點 值。 您稍後會在
REDIS_CACHE_ADDRESS
環境變數中使用此值。依序選取 [設定]>[驗證]。 選取 [存取金鑰] 並記錄 [主要數值]。 您稍後會使用此值作為
REDIS_CACHE_KEY
環境變數。使用下列命令匯出環境變數
REDIS_CACHE_ADDRESS
和REDIS_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 伺服器的共用資源目錄。
java、resources 和 webapp 目錄包含範例應用程式的原始程式碼。
在 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 應用程式。
確認您本機複製的目前工作目錄是 java-app-jcache。
執行 Maven 命令
mvn clean package
並封裝應用程式。執行
mvn -Predisson validate
,將 Redisson 配置文件複製到正確的目標位置。 此步驟還會將環境變數的值REDIS_CACHE_ADDRESS
和REDIS_CACHE_KEY
插入到 redisson-config.yaml 檔案中,該檔案是由 server.xml 檔案所參考的。執行
mvn dependency:copy-dependencies -f pom-redisson.xml -DoutputDirectory=target/liberty/wlp/usr/shared/resources
,將 Redisson 客戶端庫及其依賴項複製到 Liberty 伺服器的共用資源目錄。執行 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,您應能看到應用程式首頁。
在 新咖啡 窗體中,設定 [名稱] 和 [價格]的值,然後選取 [提交]。 應用程式會建立新的咖啡、保存它,並將 HTTP 會話儲存在 Azure 受控 Redis 實例中。
幾秒鐘後,您會看到新的咖啡顯示在數據表中,我們的咖啡。
範例應用程式的螢幕截圖,顯示在應用程式的工作階段中建立並保存的新的咖啡。
若要示範可以從 Redis 取出工作階段資料,請使用 Ctrl+C 停止應用程式,並使用 mvn liberty:dev
命令重新啟動它。
然後,重新整理應用程式首頁。 您應該會在新增咖啡一節中看到相同的會話數據。 當您完成測試時,請停止應用程式。
將應用程式容器化
您可以選擇性地使用下列步驟,在容器中封裝和執行應用程式。 此範例應用程式提供兩個適用於 Open Liberty 和 WebSphere Liberty 的 Docker 檔案。 本指南使用適用於 Open Liberty 的 Dockerfile,但您可以遵循類似的步驟,使用適用於 WebSphere Liberty 的 Dockerfile。
安裝適用於您 OS 的 Docker。 如需詳細資訊,請參閱取得 Docker (英文)。
使用下列命令來建置 Docker 映射:
docker build -t javaee-cafe-jcache:v1 -f src/main/docker/Dockerfile .
使用下列命令啟動 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 Kubernetes Service (AKS) 叢集上使用 Open Liberty 或 WebSphere Liberty 部署 Java 應用程式
- 在 Azure Red Hat OpenShift 上部署 WebSphere Liberty 和 Open Liberty
- 在 Azure Container Apps 上部署具有 Open Liberty 的 Java 應用程式
若要探索在 Azure 上執行 WebSphere 產品的選項,請參閱「在 Azure 上執行 WebSphere 產品系列有哪些方案?」