2019-08-30 09:42

日志里面会有这类信息

不建议将这类信息响应到客户端,攻击者可以利用这个功能有针对性攻击,在出异常时响应 500 页面、404 页面即可

如果一定要显示这类异常,做一个全局拦截器即可,大致代码:
try {
inv.invoke();
} catch( Exception e) {
inv.getController().setAttr("errorMsg", e.getMessage());
inv.getController().render("error.html");
}


如果你是希望将错误输出为 json ,可以这样:
inv.getController().renderJson("errorMsg", e.getMessage());

2019-08-29 20:10

@渴死的鱼 "换成这个" 是换成哪个?

2019-08-29 17:10

大概率是客户端出问题了

做一个 html ,里面放上 input type=file 表单域,测试一下上传功能是否正常

你现在发贴上传的这个异常信就是用的 jfinal + cos 来上传的,用了八年多了,没有问题的

2019-08-29 16:32

jfinal 性能是 spring + mybatis 的 4.56 倍,这里是测试项目链接:
https://gitee.com/jfinal/jfinal-performance

jfinal 模板引擎性能是 freemarker 的 4.27 倍,是 velocity 的 3.42,不仅速度快而且内存占用更小,这里是测试项目链接:
https://gitee.com/jfinal/enjoy-performance

jfinal 4.4 又优化了 enjoy 模板引擎的性能,再次提升了 13% 的性能

比 jfinal 性能低得多的 spring 已被广泛应用,所以,完全不必关心 jfinal 的性能

2019-08-29 16:30

并发与很多因素相关, jfinal 诞生八年多,一直都极度关注性能,每一行代码都要考虑性能

所以 jfinal 的性能民传统框架的好几倍,可以自己在本地测试一下,参考这篇文章中提供的测试项目:
https://www.oschina.net/news/90815/jfinal-3-3

2019-08-29 14:49

注意排查是不是有多个版本 druid 的 jar 包有冲突,或者是没有引入该 jar 包

2019-08-29 14:48

@MarlonBrando jar包放到Tomcat的lib文件夹下不是一个好办法

这种方式能解决,已经证明了是 jar 包的问题,排查一下很好解决

2019-08-29 12:10

添加一下 druid 的依赖,可以参考 jfinal 项目的 pom.xml
https://gitee.com/jfinal/jfinal/blob/master/pom.xml

注意要去掉 scope provided 这个配置项

2019-08-29 12:09

@lori 如果希望用 fastjson 转换,需要配置:
me.setJsonFactory(new FastJsonFactory());

设置断点,看看转换流程走的是哪个类,这类问题很好查

出现 attrs 这个不太正常,一定要查出原因来,记得搞定后回来分享一下

2019-08-29 10:56

调整数据库连接池的初始大小,新版本 jfinal 做过调整,建议升级到最新版本 jfinal

启动会快得多

2019-08-29 10:11

检查你的 sql 序列处在事务中时,是不是发生了死锁

然后 google 搜索一下 "mysql 死锁" 解决

2019-08-29 10:04

看一下 jfinal 的 Model.java 源码中的 getAttrs() 方法是不是存在?

如果存在的话,升级到新版本,新版本方法名添加了下划线,不会被 fastjson 处理 _getAttrs()

不过这个只能解释属性到了 attrs 下面的原因,不能解释为什么你生成的 getter 方法未被用在 json 转换之中

查看一下 Useryieldlog 的 base model , 是不是真的生成了合格的 getter 方法

2019-08-28 18:22

拦截器与 Filter 完全无关

如果你是想添加 Filter ,直接在 web.xml 中添加即可,如果是 jfinal undertow 下开发,看下文档有关如何添加的办法

2019-08-28 17:19

大厂开放 API 时要考虑没有用上 https 通道的用户,所以一开始就提供了签名验证机制

有了签名机制无论在 https 还是 http 通道内都是安全的(当然,没有绝对的安全)

签名机制不要考虑是不是麻烦,而是要考虑是否有必要

2019-08-28 17:04

@jfinal初识 我还是直接说结果吧,你的这个需求不可能实现,原因如下:
1:batch 批量的基本出发点是: 一条 sql + 多组数据 一起提交到数据库进行操作

2:也就是说,一条 sql 要能被多组数据 "共用"

3:如果不能共用,那就是多条 sql + 多组数据,这种情况就不是 batch 操作了,而是与 for 循环一条一条 sql 去执行没有区别

4:也就是说, batch 操作要么是一条 sql 搞定所有数据,要么就不是 batch 操作


具体到你的需求,其中的那么 sql 大致是:
insert into (...) values ( ?, ?, ? )

假定上面的 sql 是三个问号占位符,假定你的数据前一万条都正好是三个参数,而第 10001 条数据只有两个参数,假定少了一个 name 字段的参数值

此时,JDBC 约定的同一条 sql 适用于多组数据,这个基本点就不成立了

说到底,是 JDBC 不支持,不是 jfinal 不支持

JDBC 要是真去支持,那就不是 batch 了