如何在springboot中通过UserTransaction控制事务

原项目使用的是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去控制,扫描某类开头的方法对所有的方法做事务的控制,方法执行前做什么,执行后做什么等等,