2020-11-13 12:21
@加洲旅馆2012 现在官方给出的 jfinal undertow 打包脚本 package.xml 中已经添加了针对 非 maven 库依赖的配置:
<!-- 项目 lib 目录下的本地 jar 包全部 copy 到 lib 目录下 -->
<fileSet>
<directory>${basedir}/lib</directory>
<outputDirectory>lib</outputDirectory>
</fileSet >
上面的例子可以在首页下载 jfinal_demo_for_maven 获取
上面的例子给出的是 copy lib 目录下面的 jar 包, 你可以配置成其它路径 copy 任意地点的 jar 包
2020-11-13 12:13
@杜福忠 同学讲的最详细
关键点:
1:有异常会被回滚(注意自己不要吃掉异常,要让异常向外抛出)
2:自己 try catch 异常的时候,注意在 catch 中 return false
3:return false 会回滚
4:如果上面的都满足,还是没回滚。 应该是事务级别太低了,通过 ar.setTransactionLevel(int) 配置一下, 一般设置为 4 就可以了, 设置成 8 性能会很低
最后我还碰到过一种情况,开发者自己不小心,其实提交的数据是上次调试就已经提交的,程序实际上没问题
2020-11-12 16:31
@杜福忠 同学的方向是最好的, 在 configHandler 中可以配置 ActionHandler :
me.setActionHandler(...)
你只需要拿到 jfinal 默认的 ActionHandler, 继承一下它, 然后覆盖掉父类的 handler 方法, 然后将父类 handle 方法中的内容照抄,再加上自己的 ip 输出就可以了
注意,有几处地方输出了 404 Action Not Found, 都要处理一下
2020-11-12 16:02
@或是的话 我再补充一下,有些情况可能比你现在的需求更复杂,除了用 @Clear 适当清除以外
还要以在拦截器内部去控制,例如下面这样:
pubic MyInter implements Interceptor {
// 用于排除指定的 controllerPath 不拦截
Set《String》excludeControllerPathSet = new HashSet();
// 初始化。可以通过外部配置文件来初始化,或者读数据库 初始化
static {
excludeControllerPathSet.add("/xxx");
excludeControllerPathSet.add("/yyy");
...
}
public void intercept(Invocation inv) {
// 被排除的 controllerPath 不拦截,直接调用 invoke() 放行
if (excludeControllerPathSet.contains(inv.getControllerPath()) {
inv.invoke();
return ;
}
// 这里放上拦截逻辑
....
}
}