如何开发支持群集的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. 支持Memcache的MySQL集群
- 2. HSQLDB集群/复制支持?
- 3. XA Transactions支持MySQL集群?
- 4. MapR集群支持Spark上的Hive?
- 5. Redis中的Redis集群支持2.8.19
- 6. vSphere iSCSi不支持VM群集?
- 7. Alfresco 3.4e CE是否支持群集?
- 8. spring-data-redis是否支持redis集群?
- 9. spring data redis集群管道支持
- 10. 詹金斯是否支持集群?
- 11. OrientDB是否支持多集群事务?
- 12. socket.io-redis是否支持redis集群?
- 13. Sip Servlet在wildfly上集群
- 14. IDE支持开发OpenCart
- 15. iPhone无法支持开发
- 16. G4jsf仍在开发/支持?
- 17. FacesServlet Servlet 3.0异步支持
- 18. Java Servlet异步支持
- 19. 开发集群应用程序
- 20. 针对SQL Server集群进行开发
- 21. 支持Kerberos的Hadoop集群中的Spring Cloud数据流
- 22. Will istio是否会添加对Docker群集的支持?
- 23. 支持群集的客户端应用程序(对SQL Server)
- 24. 卡夫卡是否支持经纪集群前的ELB?
- 25. ejabberd是否支持NOSQL RIak上的数据库级集群?
- 26. Redis的集群不支持多个主节点
- 27. Google对企业Android开发的支持
- 28. 支持Linux on Rails开发的Linux IDE
- 29. 使用CakePHP开发自定义CMS,支持多语言支持
- 30. 雪花支持按小时微分区群集?