我正在嘗試在兩臺不同的機器上的兩個 tomcat 服務器(, )之間設定會話復制。我正在使用and而不是. 我沒有使用任何負載均衡器。以下是我主要關注的網站。我提到了這個配置,因為這是我的確切要求。server1server2StaticMembershipInterceptorStaticMemberMulticast
http://khaidoan.wikidot.com/tomcat-cluster-session-replication-without-multicasting
我正在使用Tomcat9。
我期待的是在上述配置之后:
服務器1:Tomcat A
服務器2:Tomcat B
執行結果:
第一步:我啟動 Tomcat A. 加載網頁。( http://server1:8080 ) 通過輸入用戶名和密碼登錄到應用程式并創建會話。
第二步:我啟動 Tomcat B。加載網頁。(http://server2:8080)。它應該在不輸入用戶名和密碼的情況下自動登錄到應用程式。沒有登錄頁面應該可用。
上述配置后的實際結果:
在第二步:登錄頁面可用。出現登錄頁面的原因是它創建了不同的會話。
當我在同一臺機器的兩個節點上測驗相同的配置時,它作業正常。但在不同的機器上,它不起作用。
到目前為止我嘗試了什么:
檢查了兩個 tomcat 的日志檔案 - 我可以看到連接已建立。
確保有可分發的標簽
在 context.xml 中也添加了相同的內容
正如我在幾個論壇中看到的那樣,嘗試在標簽內添加。
檢查 netstat -ano 我可以看到兩臺機器的埠都在 4100 監聽
我是否缺少任何其他配置?不知道為什么它不起作用。
uj5u.com熱心網友回復:
我假設您正在使用基于 cookie 的會話跟蹤,因為它默認啟用,并且如果客戶端愿意發送 JSESSIONID cookie,則它優先于 Tomcat 中基于 URL 的會話跟蹤。
Cookie 的范圍僅限于特定的主機名和路徑。因此,當您登錄到 Tomcat A (http://server1:8080) 時,您會獲得一個范圍為server1/path. 當您訪問 Tomcat B (http://server2:8080) 時,您的 cookieserver1未發送,您需要登錄。
如果您希望它起作用,您將需要選擇以下選項之一:
- 使用反向代理/負載均衡器
- 使用多 IP DNS 決議
server(非server或server2)多個 IP 地址,每個 IP 地址指向一個單獨的 Tomcat 實體 - 禁用基于 cookie 的會話跟蹤
但是,由于瀏覽器遵循 HTTP cookie 處理規則,您測驗事物的方式無法正常作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/426560.html
上一篇:由于兩個應用程式在本地計算機上運行,??Tomcat地址已在使用中錯誤
下一篇:嚴重:向類[org.springframework.web.context.ContextLoaderListener]的偵聽器實體發送背景關系初始化事件的例外
