У меня проблема с транзакцией, когда я пытаюсь развернуть приложение 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>
Если я пытаюсь запустить исключение после метода обновления, данные уже сохраняются в базе данныхтак что никакое действие отката не может быть сделано.Есть ли у вас предложения?Спасибо всем за помощь !!