2021-07-02 11:51

按说应该没有影响啊,Thread的daemon和关闭Tomcat等容器有关。是不是任务里面用什么写法一直不释放数据库的连接池啊?补贴一下任务器的代码吧,以及启动后发生阻塞是多长时间,数据库的连接最大数是多少,DruidPlugin的大小值是多少等等信息得提供参考

2021-07-02 11:42

没试过,网上说 达梦数据库和 oracle 数据库比较像,可以试试 arp.setDialect(new OracleDialect()); https://jfinal.com/doc/5-9

2021-07-02 09:25

是的,需要。 https://jfinal.com/doc/5-2

2021-06-28 18:58

用解压工具打开 jar包看一下,上面提示的class文件是否没有打进jar里面

2021-06-25 11:53

#define aaa()
aaa#end

2021-06-23 18:15

估计得提供一下需求背景,然后波总会考量。或者自己用的话,可以在base层重写覆盖一下这几个方法

2021-06-23 18:14

没有提供太多参考信息,有点难猜了。
可以用排除定位问题,有几个思路:
1 其他的过程函数是否可以正常调用?
2 MySQL命令行执行的账户是否和java这边账户相同(得看函数代码)?
3 使用JF官网提供的demo去运行一下这个函数,看是否成功调用。
。。。再说吧。。。

2021-06-22 14:10

replace ClassLoader 就是 替换类加载器
调用栈:
config.replaceClassLoader();》
getClassLoaderKit().replaceClassLoader();》
currentClassLoader = new HotSwapClassLoader(classPathUrls, parentClassLoader, hotSwapResolver);
又放置了一个新的空容器去装载新的Class,这样比如一些类里面有成员变量赋值啥的,都会重置,重新加载了

2021-06-22 10:24

UndertowServer 》
doStart() 》
init() 》
configJFinalFilter() 》
Servlets.filter("jfinal", getJFinalFilter()) 》
config.getClassLoader().loadClass("com.jfinal.core.JFinalFilter") 》
.addInitParam("configClass", config.getJFinalConfig()) 》
public JFinalFilter(JFinalConfig jfinalConfig) 》
。。。servlet 》》
public void init(FilterConfig filterConfig) 》
jfinal.init(jfinalConfig, filterConfig.getServletContext()); 》
this.servletContext = servletContext;
this.contextPath = servletContext.getContextPath();

initPathKit();

Config.configJFinal(jfinalConfig); // start plugin, init log factory and init engine in this method
constants = Config.getConstants();

initActionMapping();
initHandler();
initRender();
initOreillyCos();
initTokenManager();
不扒了。大致就这

2021-06-22 10:13

UndertowServer里面有个方法:
private Class<? extends Filter> getJFinalFilter() {
try {
return (Class<? extends Filter>)config.getClassLoader().loadClass("com.jfinal.core.JFinalFilter");
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
其中 config.getClassLoader().loadClass 就是调用的HotSwapClassLoader的loadClass
然后JFinalFilter里面又会初始化各个类init方法servlet的知识点了,里面的jfinal.init等等代码,得追着读了

2021-06-21 12:07

@hb963724769 那帖子上的理解没有问题,应该就是最简单的处理方案了

2021-06-18 14:27

任务如果不需要强指定同一执行时间,并且担心数据库性能问题。
那么可以把这些操作放在一个Cron4j任务去调用,单线程去try顺序执行即可。
至于持久化这个概念是Quartz的吧,Cron4j因为入口是Runnable接口的java类,应该是都可以自己操作的吧

2021-06-14 23:12

stream写法提出来,单写一行,把执行结果放入setOrPut就可以,不要使用对象

2021-06-11 14:08

JFinalJsonKit.setToJsonFactory(value -> {
复制 JFinalJsonKit里的转换代码,并根据情况定制自己的代码
return new ;
});