2019-10-22 18:19

貌似你在 controller 中启动了一个新的线程,如果这个新的线程对 controller 有引用,在使用 controller 的方法或者在使用 controller 内部的 request、response 对象,那么一定会出问题

因为当前主线程已经响应了数据,而你新起的线程再去操作 request、response

2019-10-22 17:40

提问起码要尊重回答者,这种提问除了让回答者浪费时间以外,不可能猜到答案

2019-10-22 17:39

猜不到有什么错,我也可以猜这是没有错误的

2019-10-22 16:47

信息量不够,异常最重要的 cause 部分也没有

此外,导出 excel 并不是 jfinal 的功能,你只要掌握好第三方的 excel 导出功能就可以了,只是在 jfinal 中用一用而已

2019-10-22 16:39

@王先森 建议将 Thread 设置为 daemon 线程,否则在关闭服务的时候会因为你的这个线程还在运行,而无法关闭

Thread thread = new Thread( () -> {
GpsReceive.doStart();
});

thread.setDaemon(true);
thread.start();

2019-10-22 16:08

另起一个线程即可:
new Thread( () -> {
GpsReceive.doStart();
}).start();

2019-10-22 15:38

最后,这个问题与 jfinal 的关系是?

2019-10-22 15:38

还有一个办法,开启 druid 的统计功能,可以得到查询慢的 sql, 找到慢的 sql 以后,可以针对性的优化这部分数据库逻辑,例如将 select * 改成 select x, x, x .... 这样的

2019-10-22 15:37

对热点区域要心中有个大致的数,如果希望很小的改动就可以解决问题,可以在热点区域用一下缓存,这样相以让系统直接响应缓存,而不是直接查询数据库

当然,如果数据实时性很高的话缓存也不合适,要考虑数据库的优化,或者考虑将部分数据从关系型数据库转移到类似于 redis 这样的地方

2019-10-22 15:21

@彬彬123 做一个 pubic class MyFileRender extends FileRender ,覆盖其中的 encodeFileName(...) 方法尝试解决一下这个问题,然后这么来用上:
render(new MyFileRender(...));

如果可以正常工作了,在这里反馈给我,然后我做一下改进,谢谢

2019-10-22 11:00

@yunqi 找了一下,貌似不可以,建议看一下 fastjson 官方文档,或许可以配置

2019-10-22 10:58

如果不支持,请贴出出问题的异常,jfinal 会改进这里

此外,如果能针对这个改进在 gitee.com 上提交 PR 是最好的

2019-10-22 10:58

edge 浏览器貌似是 windows 10 才有的,而 FileRender.java 已经很多年历史了

FileRender.encodeFileName(...) 方法中虽然没有对 edge 的判断,但最后一个 return 应该也是支持的

2019-10-21 21:59

这个是 fastjson 的一个特性,对循环引用做了检测,以免出现 StackOverflow 的异常

参考一下 fastjson 相关文档:
https://juejin.im/post/5cbad0e0f265da0375169e67
https://www.jianshu.com/p/50fe2b473cae

在 jfinal 里面,对 fastjson 进行配置的大致方法如下:
SerializeConfig.getGlobalInstance().config(Xxx.class, SerializerFeature.DisableCircularReferenceDetect, true);

以上配置对全局循环检测进行了配置,对 Xxx 这个类的转换去除了循环检测

2019-10-21 15:35

反馈错发到了分享频道,贴子在随后会被删除,请知悉