EJB вставил PCF с TomEE - мне нужно сохранить управление транзакциями в методах - PullRequest
0 голосов
/ 13 ноября 2018

У меня проблема с транзакцией, когда я пытаюсь развернуть приложение javaEE в среде PCF.В PCF я настраиваю сборку пакета Tomee, чтобы использовать мой класс EJB.В этом проекте я также настраиваю mybatis-spring и spring-cloud-cloudfoundry-connector для подключения к службе источника данных, настроенной непосредственно в среде PCF.Но как я могу управлять транзакцией в методы?На самом деле, когда вызывается метод EJB, когда я вызываю, например, метод обновления с помощью mybatis mapper, он автоматически фиксирует.

Я привел вам пример кода:

@Stateless(name = ProcessServiceRemote.SERVICE_ID)
@Interceptors(value = MYInterceptor.class)
@TransactionManagement(value = TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class MyEJBimplements implements EjbRemote{

    @Override
    public void doSomethind(MyObject o){
        MyDao dao = new MyDao();
        dao.update(o);
        LOG.info("record updated:"+o);
        dao.select(o);
    }

}

и следуя инструкциямкласс dao:

public class MyDao{

@Autowired SqlSessionFactory factory;

public void update(MyObject o){
    SqlSession session = null;
    try{
        session = factory.openSession();
        MyObjectMapper mapper = session.getMapper(MyObjectMapper.class);
        mapper.update(o);
    } catch(Exception e){
        e.printStackTrace();
    } finally{
        if(session != null){
            session.close();
        }
    }
}}

И после конфигурации xml mybatis-spring:

    <beans:bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <beans:property name="dataSource" ref="dataSource" />
    <beans:property name="configLocation" value="classpath:it/reply/iveco/tims/be/dataaccess/config/myBatisConfig.xml" />
    <beans:property name="transactionFactory">
        <beans:bean class="org.apache.ibatis.transaction.managed.ManagedTransactionFactory" />
    <beans:property>
</beans:bean>

    <beans:bean id="sqlSessionyTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <beans:constructor-arg index="0" ref="sqlSessionFactory" />
    </beans:bean>

Если я пытаюсь запустить исключение после метода обновления, данные уже сохраняются в базе данныхтак что никакое действие отката не может быть сделано.Есть ли у вас предложения?Спасибо всем за помощь !!

...