现在我是组件化开发,目前是三个组件放到一个可运行项目中,一起打包成可执行jar包放到Linux上面部署,是否可以将项目和组件都分别打包成war包来部署?
我想实现部署可运行项目后,我修改完A组件,单独将已运行的项目中的A组件替换掉,不停掉当前的项目就可以实现A组件的替换。
现在我是组件化开发,目前是三个组件放到一个可运行项目中,一起打包成可执行jar包放到Linux上面部署,是否可以将项目和组件都分别打包成war包来部署?
我想实现部署可运行项目后,我修改完A组件,单独将已运行的项目中的A组件替换掉,不停掉当前的项目就可以实现A组件的替换。
你这个想法有点像微服务的要求了。Jmix 本身是适合单体开发的,在 设计理念 :: Jmix 文档 中有讨论过 Jmix 与微服务的关系,但即便用 Jmix 开发协作的单体,也仅仅只是在代码层面的分离,而非部署层面的分离。
比较好的一个实践是使用集群部署,可以较为无感地逐步更新集群中的单体服务。但是由于 Vaadin 的粘性会话要求,无论如何在替换用户当前使用的单体时,还是会造成用户体离线的问题。这个我们一般是从操作层面避免,比如在午夜12点更新。
回到你的问题,假设用 Tomcat,那么会存在用户的session和context在不同war包(webapps/war1 webapps/war2 …)下同步的问题,我感觉这个应该是 Tomcat 这种容器所不支持的。参考 StackOverflow 的这个讨论也许有所启发。
好的,感谢