undertow 每次上线都要重新打包,有没有更简便的方法

image.png

1.现在每次上线都要把整个release 包导到linux 下 。./jifinal start  

2.为什么生成的jar包才200K 应该怎么使用?

用的是demo4.8的

评论区

JFinal

2020-01-16 19:39

如果你只改了 jar 代码,只需上传 innerVisitor-4.8.jar 覆盖掉服务器上的同名文件即可

如果你只改了模板文件,也只需要覆盖相应的文件即可

如果你希望每次部署不用重新打包,可以借助于 jenkins 这类持续集成工具,让打包部署自动化

北流家园网

2020-01-16 20:38

@JFinal meven项目挺麻烦的,修改一个java文件,都需要重新打jar包,上传、重启,有没有只更新一个class文件而不用重启?

JFinal

2020-01-16 20:57

@北流家园网 JVM 不支持热加载,需要通过别的机制

北流家园网

2020-01-16 22:48

@JFinal 有什么别的机制吗?推荐介绍下

fa可儿

2020-01-17 10:51

@JFinal 目前就是只改了java代码,想只提交一个class文件就能够部署。innerVisitor-4.8.jar 都没丢上去。。

JFinal

2020-01-17 16:00

@北流家园网 java 的 Instrumentation 机制 + 定制 ClassLoader, 用这两套东西将 JVM 类加载接管过来,然后对于动态改变的 .class 文件进行重加载

重加载修改类并不是最麻烦的,最麻烦的事情是重加载类如果在内存中有对象实例,还需要将这些实例对象进行更新替换

jfinal undertow 用了 ClassLoader 通过重启容器来实现热加载,绕开了很多麻烦事

jrebel 这个第三方是专门实现热加载的,它做得比较细粒度,所以工作量极大,是一个很大的项目,可以参考一下

热门反馈

扫码入社