2021-07-02 14:09

https://jfinal.com/doc/5-7
可以,if (isInTransaction == false) conn.commit();

2021-07-02 13:58

或者 在 jfinal.sh 里面 多复制几行
java -Dundertow.port=8080 ...
java -Dundertow.port=8081 ...
java -Dundertow.port=8082 ...
这样

2021-07-02 13:55

上面是一种方式,最简单的是用命令挂参端口即可,源码中有说明:
使用 System.getProperty(...) 加载命令行传入的 undertow.port 与 undertow.host 参数, 因为这两个参数最有可能在运行项目时进行变动,这个功能可以免去创建 config/undertow-pro.txt 来配置最需要变动的 port 与 host 参数,进一步节省时间 使用示例: java -Dundertow.port=8080 -Dundertow.host=0.0.0.0 -jar jfinal-club-release.jar 传参注意事项: 1:传参规则由 java 命令行给定,与 jfinal undertow 项目完全无关 2:传参以 "-D" 为前缀,并且该前缀与后方的参数名之间不能有空格 3:参数名与参数值中间用等号字符分格,且等号前后不能空格。

也就是说可以复制 jfinal.sh 里面只改 java -Dundertow.port=8080 这一行即可

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 那帖子上的理解没有问题,应该就是最简单的处理方案了