Я разрабатываю приложение Springboot.Локально, в моем IntelliJ, все работает как положено, без каких-либо ошибок или исключений.
Есть настройка докера через Rancher.Я могу развернуть встроенный Java-артефакт в Docker-контейнер.Он запускается и подключается к своей базе данных и почти работает как положено.
Проблема в задании Java-Spring- @ Scheduled Job, которое выдает исключение при запуске:
2018-12-12_15:08:57.223 TESTING-X [SockJS-6] [ERROR] o.s.s.s.TaskUtils$LoggingErrorHandler:95 - Unexpected error occurred in scheduled task.
javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:282)
at com.sun.proxy.$Proxy118.remove(Unknown Source)
at com.xyz.DataAccessImpl.delete(DataAccessImpl.java:684)
at com.xyz.services.QmStatisticService.lambda$refreshStatistics$3(QmStatisticService.java:155)
at java.util.ArrayList.forEach(ArrayList.java:1249)
...
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Чтения выполняются запросом и успешно работают.- Удаление не выполняется.
Удаление выполняется с помощью оператора EntityManager.remove(entity)
.Установкой является org.springframework.orm.jpa.JtaTransactionManager;см. ниже ...
Почему система по-разному обрабатывает транзакции в другой среде.
У кого-нибудь есть подсказки, как это исправить, или у него есть подсказка, чтобы задать дополнительный вопрос, который может помочь ...
фрагмент кода:
@Bean
@Autowired
public JpaTransactionManager transactionManagerEntityManagerFactory(EntityManagerFactory emf) {
// https://stackoverflow.com/questions/12337504/hibernatetransactionmanager-or-jpatransactionmanager
final JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(emf);
LOG.info( "using PlatformTransactionManager: "+ transactionManager );
return transactionManager;
}
Редактировать : Я подозревал, что версии Java работают на разных компьютерах.
На моем локальном компьютере я запускаюJDK-1.8 на докеризированной установке есть только JRE-1.8 ... Я исследую и делюсь своими выводами ...