JFinal.start的一些心得

JFinal.start("WebRoot", 80, "/", 5);

这种启动方式之前简单用过,最近稍微深入研究了下,得出了以下心得。

  1. 即便不以debug方式启动,以run方式启动,代码也会自动更新的。

  2. 之所以能免去手动重启,是因为onchange事件帮大家对WebAppContext进行了重启,唯一不一样的是帮大家留住了session。这种原理对于一些大一点项目或者启动很慢的项目不是很理想,因为我稍微改个东西,整个项目就要重启一遍,真的很不爽。而且大项目经常会内存溢出。相比之下,感觉使用tomcat容器debug启动项目更理想一些,因为这种模式下,只要不是新增类或者修改继承,修改已经存在的类也是不需要重启的,而且他的原理并不是重启整个项目。

  3. 看了下JettyServer的源代码,经过测试,去掉changeClassLoader方法以及onchange的时候不指定classLoader,都不影响正常使用。(onchange的时候为什么不直接复用changeClassLoader呢)

评论区

JFinal

2018-06-29 18:14

JettyServer 这段代码历史太久远了,应该是六年前的代码,下次 jfinal 3.5 是该改进这里了

changeClassLoader 确实可以重用在 onchage 中,这个或许是当时这个方法是后来新增的,没注意到可以重用

jfinal 3.5 会尝试种不用 restart webapp 的方法来支持热加载,让开发体验更平滑

JFinal

2019-01-21 17:28

建议使用 jfinal undertow,启动速度比 jetty 快得多

happyboy

2019-01-21 19:45

@JFinal 很多老项目都是用jsp做的,undertow默认不支持jsp,虽然有办法让他支持。还有就是,波总,这个回复日期得加个年份了,要不然不知道哪一年的。o(* ̄︶ ̄*)o

JFinal

2019-01-21 20:13

@happyboy 新项目可以用 jfinal undertow 来做,省太多时间

happyboy

2019-01-21 20:39

@JFinal 个人项目还好,公司项目有点困难,多年的框架了,不是说改就能马上改的,架构得大调。

JFinal

2019-01-21 20:53

@happyboy 新项目可以