JFinal

登录 注册

解决 jfinal 3.5 版本之前engine为 devMode时在 linux 文件句柄不能及时关闭问题

     jfinal 3.5 版本之前,如果 engine 工作在 devMode = true 模式下,ClassPathSource 中的 url.openConnection() 这行代码会打开一个文件句柄,而且关闭不及时,在高并发下可能引起 linux 打开文件句柄过多的问题。

    检查项目中是否受影响:

1:配置过 engine.setToClassPathSourceFactory()

2:配置过 engine.setSourceFactory(new ClassPathSourceFactory())


解决办法如下:

1:下载 MyClassPathSource、MyClassPathSourceFactory 两个文件

https://pan.baidu.com/s/1yOudl-qqDBkrHKXd06WqUA

 

2: 将所有对 engine 配置 ClassPathSourceFactory 的地方改成配置成 MyClassPathSourceFactory,例如:

    arp.getEngine().setSourceFactory(new ClassPathSourceFactory());

    改成:

    arp.getEngine().setSourceFactory(new MyClassPathSourceFactory());


     jfinal 3.5 已经改进了这里,但这个版本暂时未发布,未配置 ClassPathSourceFactory 的不受影响。engine 配置为 setDevMode(false) 的也不受影响




评论

  • 07-04 17:56
    最好提供一个可以上传源码文件的功能,这样子写好的Demo可以直接上传
  • 07-05 23:09
    devmode默认是false吗
  • 07-05 23:30
    @Miaomiao 默认是 false, 但注意一下,如果在 configConstant(Constants me) 中配置了 me.setDevMode(true) 会对模板引擎以及 sql 管理的引擎起作用
  • 07-06 11:26
    感谢大神
  • 07-06 13:48
    @houkyle 后面升级到 jfinal 3.5 以后,这些代码可以删掉
  • 发送