2019-04-22 19:29

单步调试,定位一下乱码是在哪个环境节产生的,分分钟就解决了

2019-04-22 19:28

查查微信平台的文档,了解 errcode 的含义,根据文档来解决

jfinal weixin 仅仅是提供一个调用微信平台的工具,与平台相关的具体问题要根据它的文档来

2019-04-22 19:26

NPE 单步调试分分钟解决,找到那个为 null 值的对象即可

JSP 是上古时代的产物,扔了吧

2019-04-22 19:25

@琴海森林 换上新 UI,成为了十分专业的社区,祝贺

2019-04-22 09:16

这回代码简洁好看了,感谢你的分享

原有的贴子其实可以随时修改,也可以删除

2019-04-21 20:23

@fox 这里面没有别的信息可提供,只有两点:
1:自行 getConnection() 的 Connection 对象确保在 finally 中关闭
2:处理好多线程共享 connection 的问题

一眼看去你的代码比较凌乱,重新做好设计

2019-04-21 16:32

@fox 最终的 connection.close() 动作并没有发生成 finally 块中,异常发生一次资源就泄漏一次

2019-04-21 15:40

ActiveRecordPlugin 可以在全体地方创建和初始化,不一定要在 configPlugin

所以,挑选一个符合你需求的地方做这事就行,唯一多做的事情就是手动 arp.start() 一下

2019-04-21 15:37

callback.close() 这是在另一个线程关闭 connection ?

Db.execute 方法内部已然关闭过 connection, 无需自行关闭

使用 jfinal 给定的 API 操作数据库,永远不要自己关闭 connection , 因为 jfinal 全在 finally 中关闭过

唯一需要关闭 connection 的情况是:
你自己调用 getConnection() 方法获取过 connection

你自己获取的不在 jfinal 的管控范围内

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:23

git 中的代码已更新, update 一下使用最新版

2019-04-21 10:04

通过 DbKit.getConfig().getDataSource() 可以在任何地方获取到这个 DataSource

这里要注意的是,从该 DataSource 获取 Connection 对象以后,要在 finally 块中关闭 connection, 否则出现资源泄漏 JVM 会挂掉

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 中心库的版本

非常感谢你的发现,否则下个版本会出大问题

2019-04-21 09:53

JFinalClubConfig 中配置了一个全局拦截器:
public void configInterceptor(Interceptors me) {
me.add(new LoginSessionInterceptor());
}

loginAccount 的操作在里面