2020-09-23 10:16

添加一个配置:
configRoute(Routes me) {
me.setMappingSuperClass(true);
}

如果不配置,则无法映射父类中的路由,这个是在较新版本中的改进,目的是为了提升映射的性能

2020-09-22 20:06

检查 fatjar 中的 i18n 目录是否将资源文件打进去了

此外,setBaseDefaultName 可能有问题,很久没玩 i18n , 细节不记得

最后,“为什么这里要写i18n的baseName这样写,在本地开发环境才有效?” 这些问题,其实并不是 jfinal 制定的规则,完全按照 java 官方的规范走的,jfinal 只做一个易用性封装

2020-09-22 11:42

@moyush 这个功能已经添加上了,你可以直接用上:
https://gitee.com/jfinal/jfinal-undertow/commit/5950fb2f5ef6c9aecbc2e45e0a4542ac6b5b9acb

具体用法如下:
https://jfinal.com/share/2093

注意将上述文章中的 jfinal 换成 jfinal-undertow,道理都是一样的

2020-09-21 17:11

@zzutligang 如果线程能确保在有限的时间内执行完任务,jvm 退出时顶多是多等待一段时间退出 jvm, 但有些同学碰到这种情况以为是 jvm (tomcat、undertow、jetty) 无法关闭


最后,线程的管理可以使用 java 面成的 API,极度方便,例如我在项目中的发送模板消息的线程调度:

static ExecutorService executor = Executors.newFixedThreadPool(nThreads);

public sendTemplateMsg() {
executor.execute(() -> {TemplateKit.send(...)});
}

注意,上面的 executor.execute 方法中可以传入 Runnable、Thread ,也可以直接使用 lambda 传入一段代码,如 TemplateKit.send(...);

2020-09-21 12:22

数据库字段以往用的下划线,只是历史路径依赖,并没有什么特别的优势

我在字段中用驼峰很多年了,一点问题没有,优势是显然的,字段名与 java 对象名统一为驼峰以后,写代码时更流畅了,减少认知负担,因为你脑子里只有一个驼峰,忘掉下划线

2020-09-21 12:21

数据库字段以往用的下划线,只是历史路径依赖,并没有什么特别的优势

我在字段中用驼峰很多年了,一点问题没有

2020-09-21 11:54

@rirai 人家弄这个 cookie 攻击,对你的应用产生了什么实质性影响? 应用当掉了?

2020-09-21 11:13

@jiren jfinal 俱乐部群里有 app&coffee.doc 里头有详细说明,这个计划本该早就上线,只不过去年 9 月我小孩出生,计划全打乱了

2020-09-20 17:49

刚刚我在本地测试了一下,去掉 UndertowServer.java 中的第 301 行的代码即可实现这个功能:
https://gitee.com/jfinal/jfinal-undertow/blob/master/src/main/java/com/jfinal/server/undertow/UndertowServer.java

也即删除下面这行代码:
.addHttpListener(config.getPort(), config.getHost())

如果这个改进没有副作用的话,下一版本将引入这个功能,将 undertow.http.disable=false 这个配置的行为改成直接关闭 http(80 端口),而不仅仅是屏蔽 url 请求

2020-09-20 17:13

我现在想到,让下面的配置同时也支持不开启 http (80 端口):
undertow.http.disable=false

2020-09-20 17:12

这是一个好问题,我当时在开发 jfinal undertow 的时候的确尝试做过这个功能,当时好像是关闭 Undertow 的 Http(80 端口) 以后, 443 端口的功能也没有了,所以当时就没做成这个功能

但我现在还隐约记得当时保留 http (80 端口或别的 http 端口) 与 443 一并启动是因为别的原因

所以,很可能也是可以只保留 443 的,具体做法是继承一下 UndertowServer,去除里头初始化 http handler 的那段代码即可

记得搞定后回来分享

2020-09-20 17:08

有关分页碰到的所有问题在这里都有的:
https://jfinal.com/doc/5-6

2020-09-20 17:06

@Starke

2020-09-20 17:06

OutOfMemoryError 这个异常通常是内存泄漏引起的,通过 JVM 自带的 visualvm 检查哪个地方的内存占用是一直上升的

2020-09-20 17:05

@__ 问题应该是找到了,并不是 Cron4jPulgin 不执行,而是你的项目出现了 OutOfMemoryError 异常,JVM 已经不能正常工作了,定时任务不执行就再正常不过了