2019-04-21 20:23
@fox 这里面没有别的信息可提供,只有两点:
1:自行 getConnection() 的 Connection 对象确保在 finally 中关闭
2:处理好多线程共享 connection 的问题
一眼看去你的代码比较凌乱,重新做好设计
2019-04-21 16:32
@fox 最终的 connection.close() 动作并没有发生成 finally 块中,异常发生一次资源就泄漏一次
2019-04-21 11:29
@124653847atqq.com 需要 new ActiveRecordPlugin(...).start() 启动 active record plugin 才可以
2019-04-21 10:56
@ComAndSun 出问题的代码是 jfinal weixin 开发者 @卢春梦 可能不知道排序的用意引发的,最初的排序代码是我在 4 年前写的
2019-04-21 10:02
这个问题挺大的,jfinal weixin 早期版本是我写的这个函数,是一定有排序的,我记得非常清楚,以下是早期版本的代码:
public boolean checkSignature(String signature, String timestamp, String nonce) {
String TOKEN = ApiConfigKit.getApiConfig().getToken();
String array[] = {TOKEN, timestamp, nonce};
Arrays.sort(array);
String tempStr = new StringBuilder().append(array[0] + array[1] + array[2]).toString();
tempStr = HashKit.sha1(tempStr);
return tempStr.equalsIgnoreCase(signature);
}
在 git 上也可以看到直到最新版本 jfinal weixin 2.3 的时候还有排序这个:
https://gitee.com/jfinal/jfinal-weixin/blob/jfinal-weixin-2.3/src/main/java/com/jfinal/weixin/sdk/kit/SignatureCheckKit.java
排查了一下,没有排序的版本是在 18 天前被改掉的:
https://gitee.com/jfinal/jfinal-weixin/commit/c4f4c3aea5e3cc3e635229e8f34e93d1c3763cae
幸好 maven 中心库的最新版本仍然是有排序的,建议使用 maven 中心库的版本
非常感谢你的发现,否则下个版本会出大问题