2013-04-11 42 views
1

我在一臺Tomcat 7(7.0.28)服務器上有一個webapp。我想使用Tomcat的內置並行部署功能(FOO ## 001.war,FOO ## 002.war等),但我不能讓用戶保留舊版本,直到他們的會話超時或以其他方式無效。我也不能僅僅在舊的webapp上使他們的會話失效,並讓他們在新的webapp上重新登錄。我已經研究了集羣tomcat服務器,但是我只有一個Tomcat實例。平行tomcat webapps之間會話遷移的簡單方法?

是否有一種使用我現有的設置而不會改變太多(或任何,最好)從舊版本自動將會話遷移到新版本的簡單方法,而不會使會話失效或從webapp引導用戶?

回答

0

經過大量的研究和挫折之後,結果是,我想實現的目標對Tomcat來說根本不可能 - 至少不是我希望的。我最終想出的解決方案是使用memcached會話管理器,而不是默認的Tomcat序列化策略。這允許會話在Tomcat外部保持活動狀態,並且允許它們在同一個Tomcat容器中運行的多個webapps之間共享。

但是,這又產生了另一個問題,因爲現在相同的會話對同一個webapp(不同版本)的兩個實例有效。 Tomcat不知道如何處理這種情況,因爲舊版本和新版本的應用程序位於相同的地址,而不是選擇一個實例,Tomcat什麼也不做,並顯示一個空白頁面。這個解決方案有點不好 - 我修改了我們的Ant部署腳本,以便同時部署新版本的webapp並取消部署舊版本的webapp。

這會導致應用程序完全無縫部署,而不會影響最終用戶。