我有一個龐大的單片web應用程序,每當我對webapp的特定部分進行更改時,我都會強制部署整個應用程序。我希望根據功能將其分解爲更小的塊(例如,在銀行網站 - 我想從網上銀行功能中分離信息資料,所以如果我對網上銀行功能進行更改,我會只需部署該部分)將webapp分解爲多個部分(tomcat)
這裏面臨的挑戰是跨Web應用程序存在某些通用元素,就像在應用程序中共享的通用類一樣。
關於webapp分區的不同方式有什麼想法嗎?謝謝。
我有一個龐大的單片web應用程序,每當我對webapp的特定部分進行更改時,我都會強制部署整個應用程序。我希望根據功能將其分解爲更小的塊(例如,在銀行網站 - 我想從網上銀行功能中分離信息資料,所以如果我對網上銀行功能進行更改,我會只需部署該部分)將webapp分解爲多個部分(tomcat)
這裏面臨的挑戰是跨Web應用程序存在某些通用元素,就像在應用程序中共享的通用類一樣。
關於webapp分區的不同方式有什麼想法嗎?謝謝。
這不是tomcat特有的,但總的來說,如果你正在拆分一個web應用程序,你需要一些方法來在分佈式的部分之間共享不同的狀態。您可以使用數據庫或memcached存儲來獲取會話信息,但要確保每個應用程序都可以讀取公共會話數據(某些框架將使用密鑰來加密會話數據,並且需要所有密鑰都具有相同的密鑰才能讀取它)。我不認爲會話信息的大多數cookie存儲都會以這種方式散列,因爲cookie不會在應用程序之間正確保存。
按功能分解最有意義。看看你可以在哪裏分離你的後端代碼。如果你有很好的安靜類型的URL,你可以看看你的URL,以幫助確定好的分區。另外,如果你有一個很大的靜態部分,你要單獨更新,也許這應該由tomcat以外的其他東西提供服務。
對於常見的類,您可以將類實現放置在tomcat/lib文件夾中的jar中。他們將可用於整個服務器。他們不能夠很好地適應你的web上下文(除非你將上下文傳遞給他們),你將不得不重新啓動整個服務器來更新jar文件以使tomcat重新加載它。
也許你可以用界面工作,讓你在每個分區中更獨立,允許它們以某種方式獨立編譯。也許某些遠程方法調用也可以幫助您將常用功能移到單個.jar或.war中。
謝謝Danivo。對不起,我的問題不清楚,會話只是一個共享實體的例子。我正在尋找任何共享的組件,例如一個由整個應用程序使用的類。 – rubyer 2009-08-06 01:01:42