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 最新版本。