热代码部署取决于运行时功能。您链接到的答案并不意味着自动停止服务器部署新代码并再次启动服务器。这本来是浪费的。
相反,大多数Java应用程序服务器都可以 重新部署
该应用程序。这意味着服务器将创建一个新的Web应用程序类加载器,通过该新类加载器加载应用程序的新版本,在某些情况下,它将迁移状态(对HTTP会话进行序列化/反序列化),并删除旧版本的应用程序。
现在,重新部署的速度在很大程度上取决于应用程序本身-应用程序的初始化方式。是否需要预热缓存?是否必须满足依赖关系(a-las
Spring,CDI)?是否必须初始化Hibernate SessionFactory?涉及许多因素。
Eclipse WTP自然要做的就是它可以触发应用程序容器的重新部署过程,仅此而已。当然,小型应用程序不会花很长时间重新部署。
除非有特殊的运行时技术/容器/框架,并且没有为Eclipse开发的特殊连接器要利用钩子来触发针对该特定技术更新的热代码。一个很好的例子是OSGi运行时的bndtools。
只是为了消除一些混乱:
人们常常将
HotSwap
和 热部署
混为一谈。第一个是HotSwap,它是JVM在运行时更新类定义的功能。后一种是热部署,它是应用程序服务器自动或不增量地部署应用程序的能力,而无需重新启动JVM进程。
所以我的回答是关于热部署,而不是关于HotSwap。因此,我将热部署称为平台的“自动化”,而不是其基本机制。



