2018-12-26 17:28

@yuer_2018 出现下面这个错误:
Not Found
Powered by Jetty:// 9.4.12.v20180830

表明 jfinal 没有启动成功,通常是 web.xml 中的配置不对或者启动就有问题的情况

换 jfinal undertow 没错的,爽多了,jfinal.com 切到 jfinal undertow 一段时间了,cpub 内存占用的表现比 tomcat 要好,运行十分平稳

更重要是部署快

2018-12-26 17:24

这么快就出来分享了,超赞

有两个改进建议,对于 _init_() _clear_() 的调用,jfinal 早就准备好了工具类:
CPI._init_(....);
CPI._clear_();

省去反射调用, 性能会更好

2018-12-26 17:22

看下文档,里面都有

2018-12-26 17:21

第一个 jfinal undertow 下的 websocket 分享,好多人需要呢,非常感谢你的分享

点赞 + 收藏,下回有人问起这个问题,我可以直接扔链接过去了

2018-12-26 17:19

@himans SEO 有个说法是 url 路径越浅在搜索引擎中的权重越大,所以这个 UrlSeoHandler 通过判断是否有 id 减去了 /detail 这个目录

但这个只是个说法,除了知道搜索引擎算法的人以外,没人知道这个管不管用

SEO 最核心还是要回归到内容原创、被引用多这两点上来,所以,SeoUrlHander 没多少意义

2018-12-26 17:15

@雄雄 突然跳出一个原因:
1:windows 下的换行符是 \r\n, 而 linux 下是 \n

2:beetl 有一个自定义定界符的功能,但这个功能不仅有 bug 而且还会引发很多不可预测的问题,例如 @if (...) { ... @} 这样的将结尾代码写在同一行的用法不支持

例如下面的这种嵌套代码的结尾标记是不可预测的,你可以删除也可以添加结尾字符,而且匹配关系是不确定的
@if() {
@if() {
@}
@}

3:上述自定义定界符是在配置文件中指定的

4:打开 eclipse 工具栏的 Show whitesapce char 这个按钮,看一下定界字符是不是用对了

2018-12-26 17:12

@雄雄 突然跳出一个原因:
1:windows 下的换行符是 \r\n, 而 linux 下是 \n
2:beetl 有一个所谓的自定义定界符的功能,但这个功能引发很多不可预测的问题
3:上述自定义定界符是在配置文件中指定的
4:打开 eclipse 工具栏的 Show whitesapce char 这个按钮,看一下定界字符是不是用对了

2018-12-26 16:52

@静态代码块 单步调试一下,看内部的拦截器都配置上了哪些,跟踪一下 InterceptorManager 这个类

2018-12-26 16:51

jfinal 与 junit 在本质上没有关系的,只要各自分别会使用好 jfinal 与 junit 即可

例如会用 jfinal 的 ActiveRecordPlugin 的独立启动方式:
https://www.jfinal.com/doc/5-15

用好这个就可以方便地对数据库操作进行 junit 测试了

还可以写点 mock 类来辅助测试,例如:
https://gitee.com/jfinal/JFinal-ext2/tree/master/src/test/java/com/jfinal/ext/test

2018-12-26 16:41

@yuer_2018 这个设计方式是为了极致性能,否则可以采用 jfinal 整合的 jetty-server 的那个方案

jetty-server 的方案比较费内存,而且响应速度不如这个方案快, 这个方案配置好以后就不需要动了,部署时也不需要改配置,因为部署时会完全忽略这个配置

2018-12-26 16:30

添国一个配置:
undertow.hotSwapClassPrefix=com.eshanren.

如果还出现这类问题,继续添加配置,多个配置用逗号分隔,文档中有过说明:
https://www.jfinal.com/doc/1-5

注意看文档的第四小节

2018-12-26 16:28

@静态代码块 单步调试一下, 父类的注入要用 Aop.get(...),不能用 @Inject

2018-12-26 16:24

@fox club 中有,照抄就好

2018-12-26 16:23

@yuer_2018 src/main/resources 这里面所有文件会被编译到 classes 下面去

我看到你的项目中有一个 out 目录,这个不是标准的 maven 项目结构,甚至不是标准的 web 项目结构, 好在 jfinal 也支持这类 out/bin 目录

你只要使用我前面的配置就好:
activeRecordPlugin.getEngine().setToClassPathSourceFactory();
activeRecordPlugin.getEngine().setBaseTemplatePath(null);
activeRecordPlugin.addSqlTemplate("sqls/all.sql");

2018-12-26 16:21

@himans 建议去掉那个 handler ,会更简洁些