原项目使用的是weblogic通过这种方式获取UserTransaction,
public static UserTransaction getUserTransaction() throws NamingException, SystemException {
Context ctx = new InitialContext();
return (UserTransaction) ctx.lookup("java:comp/env/UserTransaction");
}
在业务代码中使用如下方式进行事务控制,
UserTransaction utx = null;
try {
utx = Trans.getUserTransaction();
utx.begin();
SessionMgr.addSession(userSession);
SessionMgr.updateSession(userSession);
utx.commit();
} catch (Exception e) {
try {
utx.rollback();
} catch (Exception ex) {
}
e.printStackTrace();
}
如何在不修改业务代码的情况下,能够让这种事务控制方式在springboot中生效
从表象上看只需要@EnableTransactionManagement和@Transactional就可以,但如果事务有具体控制需要再配置不同情况的事务处理行为。
你这不会是ejb的玩意吧,spring的事务提交以及回滚,交给的PlatformTransactionManager,你如果是要迁移到spring,这些业务编码都可以不要了;如果是必须手动提交,还得是以前的ejb,你这个静态方法,获取不到吗
也可以自己写个AOP去控制,扫描某类开头的方法对所有的方法做事务的控制,方法执行前做什么,执行后做什么等等,