2019-09-29 23:58

在 undertow.txt 中添加一个配置试试:
undertow.hotSwapClassPrefix=org.apache.xmlbeans.

2019-09-29 23:51

jfinal 不建议使用 context path 这种配置,除了增加工作量以外,没有任何好处

2019-09-29 23:50

在undertow.txt 中配置 context 即可,例如:
undertow.contextPath=/项目名称

注意:由于 html 中的图片、js、css 等资源文件都用的绝对路径,是没有添加 contextPath 前缀的,所以页面的css、图片、js 等资源的路径全都会不正常,需要你做出改变

需要做出两个改变
1:在 JFinalClubConfig 中的 configEngine(Engine engine) 方法中添加如下配置:
engine.addSharedObject("CTX", JFinal.me().getContextPath());

2:html 中所有资源要添加 #(CTX) 前缀,例如:
<img src="#(CTX)/upload/xxx.jpg" >
上面是以图片的路径为例,js、css 等资源路径也要这样来处理

2019-09-29 23:44

检查一下脚本是不是自己改动过:
https://gitee.com/jfinal/jfinal-undertow/blob/master/jfinal.sh

jfinal 官方提供的启动脚本是没有这个问题的,关键看一下下面这行:
java -Xverify:none ${JAVA_OPTS} -cp ${CP} ${MAIN_CLASS} &

注意最后一个字符是: &

2019-09-29 23:39

String json = getRawData();
Map map = FastJson.getJson().parse(json, Map.class);

第二行代码也可以转化成相应的 bean ,例如:
User user = fastJson.getJson().parse(json, User.class);

2019-09-29 16:55

文档中有说明
https://www.jfinal.com/doc/1-5

2019-09-29 15:20

文档说得很详细

2019-09-28 15:28

应该是你的 lib 包下面的 sj_project-xxx.jar 里面将 undertow.txt 配置文件打进去了,所以你现在修改 config 目录下面的 undertow.txt 是无效的,因为 jar 包内的优先级最高

解决办法有很多,下面提供两种最常用的办法,选其一:
1:调整 pom.xml 配置,将 undertow.txt 打包排除在 jar 包之外
2:将打好包的 config 目录下面的 undertow.txt 改名为 "undertow-pro.txt" , 会被优先加载

注意:第一种修改 pom.xml 的方法,可以下载首页的 jfinal_demo_for_maven.zip,里头的 pom.xml 中配置了一个 maven-jar-plugin 插件,其中的 exclude 对 *.txt 进行了过滤,将这个插件配置复制到你的项目中即可。通过这种方法,可以将 src/main/resources 下面的需要排除的配置给排除在外

2019-09-28 15:22

@Terely 4.2 的后续版本针对 proxy 模块有过细微的改进,一个是解决部分环境下 CLASSPATH 变量问题,二个是对生成的代码进行了细微调整

建议升级到 jfinal 4.5

此外,使用新版本的 proxy + aop 模块,并且不依赖 cglib 的话,需要 JDK 支持,不能是 JRE

对于你碰到的情况,估计升级到 jfinal 4.5 即可,记得搞定后回来反馈一下

jfinal 近几个版本升级的功能细节,可以下载首页的 jfinal-4.5-changelog.txt

2019-09-28 14:17

@Terely 加个配置即可
me.setProxyFactory(new CglibProxyFactory());

2019-09-28 12:13

按下面步骤解决一下:
1:新建一个启动类,例如:
public class App {
public void main(String[] args) {
UndertowServer.start(DemoConfig.class);
}
}

2: DemoConfig 中声明的属性不能直接支持注入(注入参考后面第三条),Aop.get(...) 只有有限的支持,因为创建 DemoConfig 的时候各种初始化还没进行,可以在 onStart() 方法中使用 Aop.get(...) 进行注入

3:可以在 DemoConfig 中的 onStart() 方法中通过 Aop.inject(this) 对 DemoConfig 中的 @Inject 属性进行注入

2019-09-27 22:45

还有一个办法要试一试,在 FileRender 中单步调试一下,让下载流程走 normalRender() 这个方法,不让它走 rangeRender() 这个方法,前者是普通下载,后者是支持断点续传的下载

有些浏览器可能对 rangeRender() 断点续传支持不太好

如果定位成功,可以通过参考 FileRender ,稍加改动,做一个自己的 MyRender 出来,然后用的时候这样:
render(new MyRender(fileName));

2019-09-27 22:42

@加到几点几分裤 从来没有碰到过这个问题,也无法重现这个问题

建议用排除法先定位一下原因,排除法步骤:
1:在 tomcat 或 jetty 下运行看看问题是否依旧
2:换浏览器看看问题是否依旧
3:换 jfinal-undertow 到 1.9 看问题是否依旧

总之,先重现这个问题,然后将可疑的地方一个一个换掉,如果当前换掉的这个东东正是始作俑者,则成功定位

成功定位问题,是解决问题的起点,目前情况下只能是猜谜

2019-09-27 22:38

save 方法最终是 insert into 这样的 sql, 所以主键也是当成普通字段来处理的,无需自主找 mappingKit 中声明的主键,这两个问题是无关的

2019-09-27 20:48

@dapk 你在 list 上使用了 synchronized 当然就没异常了

你将 for (int i = 0, n = list.size(); i < n; i++) 这个循环改成 for ( Iterator it=list.iterator(); it.hasNext();) 就会有异常了,注意要是大并发下面有异常