2017-03-07 64 views
0

我有4個web應用程序添加(部署)到apache tomcat 7服務器。服務器將在任何時間點僅託管這些應用程序,即,tomcat僅用於託管這4個應用程序。我們沒有在ROOT中部署任何東西。在apache tomcat 7中監聽上下文路徑的變化

現在,我面臨着問題會話管理

問題是我得到每個應用程序(如果我是正確的,是因爲每個應用程序有不同的容器)不同的會話。

我能想到的兩種可能的方法:

  1. 會話保持跨所有應用程序保持一致。因此, 會很容易處理。
  2. 我聽的應用程序更改Web服務器( 方面的變化/容器,我相信),然後創建,驗證或 無效會話。

在這裏我有兩個問題對應的兩種方法。

  1. 是否有可能跨所有應用程序 (容器)具有相同的會話?
  2. 是否有可能聽apache更改應用程序 (容器)?

如果答案是YES 上述任何疑問,請指導我該怎麼辦呢?如果兩種方法都是不可能,請提出更好的方法?

現在的做法:我在切換到另一個應用程序之前使會話無效,並且在切換後,我將爲相應的應用程序創建一個新會話。在這裏,如果用戶瀏覽UI,所有這些都會按預期工作,但如果用戶在一個應用程序中,則問題依然存在,然後直接嘗試通過URL(Web地址)訪問其他應用程序。

如果您需要任何其他信息,請讓我知道。

在此先感謝。

回答

0

應用程序容器和上下文非常孤立,但是有機會進行跨上下文通信。見herehere

或者,您可以使用自定義標頭和攔截器進行自定義會話管理

+0

好的。但我認爲,即使採用這種方法,我們也無法在不同的應用程序上下文中使用同一個會話對象,對吧? –

+0

@GaganVerma是的,你不能使用同一個會話對象,但是你可以在另一個會話中驗證一個會話的sessionid。這是最好的hacky。您正在尋找的是典型的SSO。你最好實施像Tomcat內置的SSO閥門或者像SAML這樣的框架 –