我的应用程序使用Engine-application,Engine。这个引擎允许从我的项目重新加载java类而不停止应用程序服务器(Tomcat),即,当我有一个新版本的项目时,我部署它并“调用”引擎来重新加载我的代码。
引擎在DispatcherServlet
有一个注册的web.xml
(Spring),它映射在/rest/*
上。由于Engine允许在不停止应用服务器的情况下重新加载java代码,理论上我可以创建一个@Controller
类,Engine会看到它。但DispatcherServlet
不会,因为它已经在应用程序服务器运行时初始化了一次。因此,我需要以某种方式使用一组新的@Controller
-s重新初始化DispatcherServlet。
我怎样才能做到这一点?
由于@Controller
可能存在其他依赖关系(例如其他bean,属性等),因此重新加载可能不是一项简单的任务。你可以尝试使用JRebel which has Spring integration。很久以前有Spring OSGI项目,但它不再维护,看起来像Pivotal放弃了OSGI。
我总是发现这些技术不值得花时间,Tomcat中的热插拔代码总会导致某种泄漏或不可预测的行为。如果我在你的鞋子里,我会优化应用程序启动时间而忘记热交换复杂的Spring bean。