2018-11-01 11:06
这个是 tomcat 的误判,不用理会
tomcat 在 shutdown 或者 restart 的时候检测到 ThreadLocal 中有数据没有 remove(),报了一个消息而已。
这个误判会让 shutdown 稍微慢十秒到二十秒,不影响使用,误判输出的日志在 tomcat 自己的日志中,而且仅会在 shutdown 和 restart 中出去
ThreadLocal 的 remove() 是一种用法,不 remove() 是另一种用法,这是完全合理的用法
翻看一下 JDK 的 ThreadLocal 源码,不去 remove 是正确的用法,只要你保证在线程使用数据之前,清掉上次使用过的无用数据即可
2018-11-01 11:02
@michelle 这个功能仅仅是开发时用的,功能在 JettyServer.java 中,你生产环境完全用不到这个类,所以生产环境完全无影响
2018-10-31 19:25
@gdever 或许可以,不记得里面是否直接有这样的方法,即便是没有,你可以通过里面的一个方法获取 EntrySet , 迭代一下得到想要的
2018-10-31 19:25
应该是你往 session 中存放了一类数据,这类数据无法被 session 持久化
看一下 JettyServer.java 源码的 void persistSession(Server server) 方法,是用来在重启项目时先保存 session 到文件之中,便于在开发类似登录功能时免除反复的登录,提升开发体验
解决办法是找到那个被保存在 session 中,而不能被持久化的对象,不要将它放在 session 之中,注意这个对象可能深藏在对象的对象的对象之中,所以要根据异常提示细心追踪
还有一个办法是继承一下 JettyServer,在报异常的地方用一个 try catch ,不让它抛出异常
2018-10-31 19:18
@freejava09 使用全局拦截器,然后可以判断客户端类型,一类客户端 render 保持不变,另一类客户端 inv.getController().renderJson()
一套代码,同时解决两个需求
2018-10-31 17:21
@66666666 显然是 JSONObject 不支持这个 model ,估计是它只支持 getter 方法型的转换,使用 jfinal 生成器为所有 model 生成 getter 方法极好
2018-10-31 16:52
@ttjs2013 这个是因为 jfinal 3.5 已经默认支持 action 带参,而 WeixinMsgController 中正好有几个带参的 action, 但是你的 eclipse 没配置好,所以会有提示,文档中已经有过说明:
http://www.jfinal.com/doc/3-3
可通过配置 eclipse 解决,也可以不必理会。 还有一种解办法是引入一个中间类,例如叫 MyWeixinMsgController extends WeixinMsgController ,然后在其中覆盖掉父类那几个有提示的方法,并在这些方法之上使用 @NotAction
最后,让你原先继承 WeixinMsgController 改为继承 MyWeixinMsgController
jfinal weixin 2.2 已经使用 @NotAction 改进过 WeixinMsgController
2018-10-31 16:07
@yunmuzhou 没有错误日志就一定要先配置好日志,让错误一定要在日志中出现,否则以后出现任何问题都无从查起,养成好习惯
例如 log4j.properties 是否配置好