2019-06-11 09:43
方案二确保一下你自己的代码在写文件时没有并发问题
例如,你的某处代码需要写某个文件,那么就要考虑并发写的问题。如果全是读文件就没有问题
采用方案二的时候要注意 jfinal.sh stop 关闭项目的问题,该命令是通过判断你项目的目录来关闭的,所以方案二在用这个脚本关闭项目的时候会将两个启动的项目一起关掉
方案一之下,你所说的文件上传问题,jfinal 多年前就做好了相关功能。你只需要配置一下:
me.setBaseUploadPath(...)
将这个 baseUploadPath 配置成一个绝对路径就可以指向项目根之外的地方,例如:
me.setBaseUploadPath("/var/www/upload");
此时,如果希望 jfinal undertow 可以将上传的文件当成 web 资源在浏览器中访问到的话,可以添加这个配置:
undertow.resourcePath=src/main/webapp, /var/www/upload
以上配置中可以用逗号分隔开多个目录,同时支持开发环境与生产环境的文件上传目录
当然,如果你前端用 nginx 接管了静态资源的访问,上面的配置可以不需要,而是在 nginx 中配置资源路径
建议使用方案二,因为更省事,升级也更方案,只需要升级一个项目即可。 方案二需要处理好 jfinsh.sh 中的 stop 函数,当然,如果你不介意一次性关闭当前项目的所有进程,也不用修改
2019-06-10 23:11
@124653847atqq.com 这个必然可以,做一个 Handler , 然后将 handle(request, response, isHandler) 中的 request 对象弄个包装类,覆盖掉其中的几个 getSession() 方法,返回一个你自己包装过的 session
让这个包装过的 session 存取数据使用 redis 即可
可以看一下 jfinal 中的这个类,里头就扩展过 session :
https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/ext/interceptor/SessionInViewInterceptor.java
2019-06-10 22:45
@zzufish 看上去是 me.setMaxPostSize(...) 配置没生效,看是不是 eclipse 的自动编译没打开,按理说是可以的
单步调试一下看看
2019-06-10 16:48
@pizi2019 引入 asm 不仅仅是多个依赖的问题,字节码操作的代码可读性很差
jfinal proxy 的方案 628 行代码,人人都看得懂,可读性很重要
2019-06-10 16:44
@hb963724769 扩展 render 可以灵活响应,扩展 RenderFactory 中的 getErrorRender 方法也可以