解决 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());


    未配置 ClassPathSourceFactory 的不受影响。engine 配置为 setDevMode(false) 的也不受影响。

    jfinal 3.5 版本已经改进了这里,强烈建议升级到 jfinal 最新版本。



评论区

热门分享

扫码入社