2017-08-06 11:29

本质上来说,在 jfinal 中使用任何第三方,直接用就好,并不需要有个整合的动作, just do it

2017-08-06 11:29

由于 quartz 有点重量级,所以 jfinal 没有整合

如果 jfinal 将 quartz 整合进来,由于 quartz 自身的复杂度,用户在使用这个整合时仍然要学习很多东西,碰到很多问题,会让用户误以为是 jfinal 很复杂,吃力不讨好的事情 jfinal 不做 ^_^

2017-08-06 11:27

cron4j 只支持到分,支持秒多数是用的 quartz

task 集群调度就看大家各显神通了,将状态、同步这类事情处理好

2017-08-06 11:15

外部向你的应用的路由 "/jrqs/msg" 发起过请求,但该路由所对应的 action 并没有调用 render 方法,或者 render 方法指向的模板路径/文件名不对

有不少情况是因为项目一开始有某个路由,后来删除或修改了路由,但外部客户端并不知道情况

2017-08-06 10:25

Caused by: java.lang.NullPointerException 这类异常不用多说了吧,单步调试秒秒钟解决

2017-08-04 20:25

将参数 daemon 设置为 false 就可以了,你再试试

2017-08-04 17:08

自己稍微改造一下,这里有一个相关的贴子:https://www.oschina.net/question/1181211_2138486

目前官方法没有时间去做这方面的扩展,做这个功能不难,难在要大量进行测试、试用

2017-08-04 16:44

每一个请求过来的时候都是独立的 controller 对象,所以 companybh 是独立的,可以为其添加一个 static 修饰,但要注意线程安全问题

建议通过拦截器来解决,拦截器自动为这个属性赋值即可,至于为啥 jfinal 的 controller 不是单例的,这里有很详细的说明:
http://www.oschina.net/question/197668_221395

2017-08-04 16:21

在首页有一个 jfinal-all-3.1.zip 可以下载, redis 所用到的 jar 包在说明文件里面有说明

start() stop() 方法是系统启动与停止时调用的,如果你是在 configPlugin 中使用,则不需要处理, jfinal 会自动调用

2017-08-04 16:03

@dear7575 注意最新版本的 jfinal 的 Model 中有一个 protected Config _getConfig() 方法,这个方法是可以通过继承并覆盖,从而实现数据源切换的

简单来说,要在整上切换 model 的数据源,并且对开发者完全透明化,只需要做两点:
1:用一个全局拦截器 + ThreadLocal 将当前线程的 Config 绑定到当前线程
2:通过引入一个中间 MyModel extends Model 覆盖 _getConfig() 方法,并在这个方法中从全局拦截器中获取 ThreadLocal 中准备好的 Config 对象

而 Db.xxx(...) 系列方法的数据源自动化切换也大体可以用上面的方式,只需要将第 2 步改为以下的方式:
让 Db.xxx(...) 方法使用的 config 对象也参考上述方式进行切换

2017-08-04 15:52

@dear7575 ActionInvocation 是 jfinal 很老版本中的类名了,后来的版本早就是是 Invocation,建议升级到新版本

此外,参考我前面的说明尝试,拦截器的用法在手册中都有详细的说明,多多调试代码,实现你想要的功能是一定可以的

2017-08-04 15:43

这里再补充一点,对于 model 来说,要切换数据源,可以在拦截器里面弄一个 ThreadLocal 保存 config 对象

然后引入一个 MyBaseModel extends Model, 让你所有最终的 model 继承这个 MyBaseModel ,里头覆盖掉 _getConfig() 方法,利用 ThreadLocal 切到你想使用的 config 上去

2017-08-04 14:39

@dear7575 使用一个全局拦截器,关注一下 DbKit.getConfig() 出来的 Config 对象中有一个 setThreadLocalConnection(Connection ) 方法

用这个方法可以直接为当前线程提供一个 connection,那么后续的数据库操作都会直拦支使用这个 connnection 对象了

更进一步,参考一下 com.jfinal.plugin.activerecord.tx.Tx.java 这个源代码,里面有这种用法,大致分几步:
1:在拦截器中通过某种方式得知当前操作的用户身份,根据登录信息很容易知道
2:通过用户身份,得到该用户的 configName
3:通过 DbKit.getConfig(configName) 得到这个用户的 config 对象
4:通过 config.setThreadLocalConnection(config.getDataSource().getConnection()) 为当前线程设置上 connection 对象
5:调用 inv.invoke()
6:在 finally 块中调用 config.close(connection)

2017-08-04 13:28

jfinal 开发的项目是标准的 java web 项目,部署方式沿用你以前的经验就可以了

这里是我写的 tomcat 下的部署:https://my.oschina.net/jfinal/blog/353062

2017-08-04 13:27

@dear7575 jfinal 手册上有说明,还有例子代码,在本站首页可以下载到