如何開發支持羣集的servlet以及相同的設計標準是什麼?支持羣集的servlet開發
回答
這不是要在代碼級別解決的問題,而是在Web服務器級別解決。所以Servlet代碼不需要知道被聚集。
正如@BalusC所說,這主要是一個服務器配置任務,如何做到這一點很大程度上取決於您正在使用哪個服務器(以及您沒有提及的服務器),但這裏是例如how to do it with Tomcat 6。
在代碼方面有一點要記住,那就是你必須小心你把什麼對象放入HTTP會話中(使用HttpSession.setAttribute()
。要使會話複製起作用,這些對象必須是爲了序列化通過網絡到集羣中的其他服務器進行運輸。如果他們不序列化的,那麼無論是服務器可以刪除它們,或者它可能會拋出異常。
的情況並不少見開發人員使用HTTP會話作爲放置大型複雜業務對象(例如,允許從JSP訪問它們)的地方,這些東西不太可能是可序列化的。表單綁定對象的其他示例,雖然是簡單的表單數據持有者,但往往不可序列化。
代碼不需要知道被羣集,但開發人員需要知道代碼可能被羣集並且會話被複制。讓我解釋。
當您在web.xml中標記web應用程序時,您告訴容器此web應用程序可以被羣集。
如果Web應用程序部署在羣集上,則羣集中的每臺計算機都將運行一個虛擬機並在其中放置此webapp。至於客戶端所關心的請求,它會看到一個Web應用程序,儘管來自客戶端的每個請求都可以由集羣中不同的虛擬服務器提供服務。
因此,如果Web應用程序正在存儲任何狀態,則必須使其可用於運行Web應用程序的vms(在集羣中)的所有實例。 這怎麼辦? 通過將您放入httpsession對象的內容標記爲「可序列化」。您正在向容器發信號通知它應該將狀態複製到其他虛擬機(如果您已設置會話複製)。它在weblogic中以幾種方式完成。每次在會話中使用setAttribute()時,都會觸發會話複製事件。
在WL有兩種方法可以複製內存中的複製和使用數據庫來複制 。我想聽聽其他應用服務器是如何完成的。
- 1. XA Transactions支持MySQL集羣?
- 2. HSQLDB集羣/複製支持?
- 3. MapR集羣支持Spark上的Hive?
- 4. 詹金斯是否支持集羣?
- 5. spring-data-redis是否支持redis集羣?
- 6. OrientDB是否支持多集羣事務?
- 7. spring data redis集羣管道支持
- 8. iPhone無法支持開發
- 9. G4jsf仍在開發/支持?
- 10. Java Servlet異步支持
- 11. 開發集羣應用程序
- 12. 針對SQL Server集羣進行開發
- 13. 支持Kerberos的Hadoop集羣中的Spring Cloud數據流
- 14. 支持羣集的客戶端應用程序(對SQL Server)
- 15. Redis的集羣不支持多個主節點
- 16. 卡夫卡是否支持經紀集羣前的ELB?
- 17. Will istio是否會添加對Docker羣集的支持?
- 18. Google對企業Android開發的支持
- 19. 支持Linux on Rails開發的Linux IDE
- 20. 使用CakePHP開發自定義CMS,支持多語言支持
- 21. MUlti JSP/Servlet中的語言支持
- 22. mahout0.7是否仍支持內存和MR KMeans集羣?
- 23. Windows Azure緩存服務是否支持羣集?
- 24. 雪花支持按小時微分區羣集?
- 25. GIT僅支持遠程開發
- 26. 優步開發者API支持聯繫
- 27. SOAP Web服務開發支持
- 28. REST工具支持開發和測試
- 29. WSO2開發者工作室 - Eclipse支持
- 30. WinRT開發是否支持NuGet包?