2019-03-21 17:02

录制得不错,坚持录制更多更好视频,可以打造个人品牌,@山东小木 @天蓬小猪 就是这样

品牌就是资本就是金钱

2019-03-21 16:56

CacheKit 使用的是 ehcache 这个第三方缓存框架,ehcache 是 JVM 进程内的缓存,所以性能极快,但是默认是不支持多进程共享的

ehcache 有相关的配置,直接支持集群共享缓存,按它的官方文档来配置一下就好

做集群建议使用 redis 作为共享缓存,jfinal 提供了 RedisPlugin 作为支持

也可以使用 OSC 创始人的 j2cache 框架来做,性能更高:
https://gitee.com/ld/J2Cache
https://www.oschina.net/p/j2cache

2019-03-21 16:52

@bobkuan 数据库在本机,可以重现这个问题? 那就太奇怪了,用排除法换台机器试试

druid 用了很多年了,从来没出现过这个问题

2019-03-21 16:51

jfinal 的 pom.xml 文件在你的项目中应该用不到,而且在我这里也没有问题

不过还是得谢谢你的反馈

2019-03-21 16:49

在 lib 目录下面查找一下你这个项目打出来的那个 jar 包, 将 jar 包改为扩展名 .zip,然后用 mac 电脑打开,里面有没有 com.app.common.CoreConfig.java

2019-03-21 16:47

文档、源代码是最基础的教程,如果想更快速提升,加入俱乐部是最划算的:
http://jfinal.com/club

2019-03-21 16:47

@hb963724769 CacheInterceptor 做得比较早,是为控制层而做的,但你可以参考它写一个可以用于 service 层的拦截器,实现方式都是似的

2019-03-21 16:45

在你自己的 task 内部使用 try catch 即可

定时任务是在独立的线程中执行的,并不会在你的 controller 、serivce 管辖范围之内

2019-03-21 16:43

@mr_wangyan 这种需求在拦截器里面使用 Db.tx 机制实现起来简单,下面给出 jfinal 拦截器的实现方式:
Db.tx(() -> {
try {
inv.invoke();
return true;
} catch (Exception e) {
Transactional tx = inv.getMethod().getAnnotation(Transactional);
Class rollbackFor = tx.rollbackFor;
if (e instanceof rollbackFor) {
return false;
}

Class noRollbackFor = tx.noRollbackFor;
if (e instanceof noRollbackFor) {
return true;
}

// 其它异常是否要回滚,选择 return xxx
return true;
}
});

与上面的方式类似,你可以使用 spring boot 的拦截器也来实现 Db.tx 机制

2019-03-21 11:47

@whjjjjjj 你这个需求或许用不上指令扩展,用用 shared method 或者 shared object 扩展就可以了

2019-03-21 11:46

@mr_wangyan 参考 jfinal 的 Tx 拦截器,在 springboot 里面也做一个 springboot 的拦截器就可以了,机制是一样的,只是实现方式不同

你甚至可以将拦截器的代码进一步简化,直接在 Spring boot 的拦截器用上 Db.tx 就可以了

2019-03-21 10:57

信息量不够,不知道具体什么需求