2019-10-24 16:48

将项目中的原码,也就是两个 java 文件,copy 到你的项目中,然后按他的 demo 来,例如:
public void configPlugin(Plugins me) {
//使用配置文件
me.add(new MqttPlugin("mqtt.properties"));
//不使用配置文件
//MqttPlugin plugin = new MqttPlugin("tcp://127.0.0.1:1883", "clientId");
//plugin.setAutomaticReconnection(true);
//plugin.setCleanSession(true);
//plugin.setConnectionTimeout(10);
//plugin.setKeepAliveInterval(10);
//plugin.setManualAcks(true);
//plugin.setMaxConnections(20);
//plugin.setUserName("test");
//plugin.setPassword("test");
//plugin.setVersion("3.1.1");
//plugin.setReConnectionTimeInterval(10);
//me.add(plugin);
}

2019-10-24 16:24

@小年年 主从关系完全体现在 redis 自身部署时的配置上,你的项目中对此是透明的

2019-10-24 12:21

理解完全正确,启动多个 RedisPlugin, 利用 cacheName 对应不同的 host 即可

2019-10-24 12:20

应该是 JDK 1.8 对于泛型的规范有变化,jfinal 是没有动过这个代码的

可以不使用是 toString() 而是使用 getStr(...)

2019-10-24 10:26

通过 ActionReporter.setWriter(....) 配置一个自己的 Writer 实现,将这些信息输出到文件里面即可,大至如下:
public class MyWriter extends Writer {
public void write(String str) throws IOException {
// 这里放上输出到文件的代码
}

public void write(char[] cbuf, int off, int len) throws IOException {}
public void flush() throws IOException {}
public void close() throws IOException {}
}

最后在 configConstant(Constants me) 中配置一下:
ActionReporter.setWriter(new MyWriter());

此外,在输出到文件的同时,还可以继承输出到控制台,在 public void write(String str) 方法实现中,再添加一行代码即可:
System.out.print(str);

2019-10-23 21:59

inv.getController().getRequest().getMethod()

2019-10-23 21:12

@liangcheng2004 非常感谢你的分享,文件上传好多人碰到客户端问题,你的分享很有价值

2019-10-23 17:59

@dplxm 你既然都能使用 tomcat 内置指定 JDK 路径来发布,为啥不在 jfinal.sh 中指定 JDK 路径呢?

修改起来简单到不能再简单,jfinal.sh 中有一个类似下面的 JDK 启动命令行:
java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} &

将其中的 java 前方添加上 JDK 的路径即可,例如:
/opt/jdk-1.8/bin/java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} &

2019-10-23 17:38

@lyq027 注意,上面的回复,更正了一下,将 #(username) 改为了 #para(username)

要注意看文档:
https://www.jfinal.com/doc/5-13

2019-10-23 17:28

@j1066783215 加密算法使用的是 JDK 中默认的,源码在这里:
https://gitee.com/jfinal/jfinal-undertow/blob/master/src/main/java/com/jfinal/server/undertow/ssl/SslBuilder.java

注意看这行代码:
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());

其中的 :
KeyManagerFactory.getDefaultAlgorithm();
就是在获取 JDK 支持 SSL 加密的默认算法

2019-10-23 17:26

用拦截器即可:
@Before(POST.class)、@Before(GET.class)

可以配置成全局的,配合 @Clear 会极度方便,因为绝大部分请求是 GET

2019-10-23 17:25

tomcat 在 shutdown 的时候没有关掉 druid 与 quartz,可能是它们有 "非 deamon" 线程正在运行

信息提示 tomcat 已经强制关闭了它们,需要确定一下 tomcat 是否真的 shutdown 成功,如果成功不会造成资源泄漏,因为 JVM 退出时会回收所有资源

此外,信息中提示是 WARNING, 措辞是 "likely",也就是 tomcat 并不是完全确定

建议使用 jfinal undertow,不存在这里问题:
https://www.jfinal.com/doc/1-2

jfinal undertow 支持开发、打包、部署一体化,性能更高,不必再折腾 tomcat 下载、安装、配置这种事情

2019-10-23 17:08

用模板用法即可:

String sqlTemplate = "select * from t_user where delete = 0 and username = #para(username)";
Page page = Db.templateByString(sqlTemplate, Kv.by("username", user.getUsername()).paginate(pageNumber, pageSize);

2019-10-23 16:28

我见过的跨度最大的版本升级是跨 9 个版本升级,对照文档基本不费力

2019-10-23 16:27

最快的办法是通过升级文档:
https://www.jfinal.com/doc/14-1

然后可以下载 jfinal 的各个 changelog.txt,在官网首页可以下载到,例如:
http://www.jfinal.com/download/?file=jfinal-4.6-changelog.txt

可以通过改变文件名中的版本号来下载老版本的 changelog,现成还可以下载到 3.0 版本的,例如:
http://www.jfinal.com/download/?file=jfinal-3.0-changelog.txt

jfinal 新版本主要有两种变化:
1:添加新的功能,例如后业添加的 enjoy 模板引擎
2:对原有功能的打磨,例如性能优化、代码重构、方法改名、类改名

对于第一种变化,不会影响升级。对于第二种变化,通过对照官网的升级文档可以快速实现升级