版本是5.1.1,在Config onStart中已配置:
Tx.setTxFun((inv, conn) -> {
inv.invoke();
Object returnValue = inv.getReturnValue();
if (returnValue instanceof Ret) {
Ret ret = (Ret) returnValue;
if (ret.isFail()) {
conn.rollback();
return;
}
conn.commit();
}
});在Service中这样写:
@Before(Tx.class)
public Ret save(CLA2 o, KB02 kb02) throws Exception {
//业务代码
return Ret.ok();
}在工开发电脑上没有出现问题,更新到服务器(linux/windows service)上,有些服务器也没有问题,但有些电脑又出现500错误,跟踪发现,Controller中使用到了这个Servcice,并且是使用@Inject注入,无法访问到这Controller中的方法,直接500.
如果修改为这样:
public Ret save(CLA2 o, KB02 kb02) throws Exception {
final Ret ret = Ret.create();
Db.tx(() -> {
try {
//业务代码
ret.ok();
return true;
}catch (Exception e) {
ret.fail();
return false;
}
return ret;
}这样写又没有问题了,适用所有服务器,都不会报500.
请问大家有没有遇到过这种情况?
项目:JFinal
此外,建议升级到最高版本