2016-03-14 60 views
1

我已經寫了一個使用java,spring和tomcat8作爲服務器的web應用程序,現在我想寫其他的,但是這個必須與之前的交互。它必須共享數據庫和會話中的一些數據(我的意思是如果用戶在一個應用程序中登錄,他不需要在其他應用程序中登錄)。什麼是實施這個最好的方法?兩個共享數據和會話的webapps

+0

看看http://www.josso.org/可能是值得的。單點登錄。 – Anirudh

回答

0

有幾種方法可以解決這個問題。 Tomcat支持集羣請參閱:https://tomcat.apache.org/tomcat-9.0-doc/cluster-howto.html 但是,如Dimitrisli已經寫過的,查看spring-session可能是最簡單的解決方案(請參閱:http://projects.spring.io/spring-session/)。

我在我的一個項目中使用它,它工作的很好,但你必須知道,現在默認的序列化方案是「ObjecStream」,這是常規的Java序列化。因此,您無法在要加入會話的服務器上使用不同版本的類。這會導致反序列化異常。但我很確定,如果你使用tomcat/jboss7glassfish/etc可能會出現同樣的問題。集羣。

如果您希望在服務部署中免費,您可以使用其中一種集羣解決方案,並且只存儲必要的最少信息,如sessionID,然後使用類似redis或您希望存儲的任何DB解決方案會話相關數據採用更「類進化」的友好格式,例如json。這會給你帶來更多的工作,但也更靈活。

0

這是相當廣泛的,但一般來說,您只需爲兩個應用程序使用相同的數據庫配置,並且可以使用會話複製來共享服務器之間的會話。 Tomcat具有一些內置功能,但您還應該考慮Spring Session,它掛鉤到servlet篩選器鏈中,以跨平臺樣式將會話外部化。

0

會議集羣有幾種解決方案,但是由於您在Spring生態系統中,請查看新推出的Spring Session project,這使得此任務變得更容易,同時也是webapp提供程序不可知論者。

0

通常不建議共享會話,數據庫共享使用JNDI並獲取對象。如果要在您的案例中處理登錄,請使用Single SignON。