2019-10-24 18:23
@小剑魔 测试了一下 jetty 也不支持参数中出现 %,这个在 jfinal 层面是完全没有干预过的,也就是说请求到达 jetty、undertow、tomcat 这一层的时候就已经出问题了
当然,确切的说不是不支持百分号,例如参数出现 %20 是支持的,例如:
http://localhost:8000?key=%20
因为 %20 会被转码成空格
url 中百分号都会被转码,如果数据不正确无法正确转码就会抛异常
说到底,这本质就是一个参数值是否能正确转码的问题
2019-10-24 17:33
@smile_5478 增加索引应该是解决该问题的真正原因,线程池数量除非原本配置很小,否则一般是不会出现瓶颈的
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 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 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 加密的默认算法