Я занимаюсь проектированием веб-сервисов для системы заказов. Когда я получаю заказ, он должен добавить около 10000 объектов в таблицу. Это может быть больше. Но поскольку я понимаю, что эта работа не закончится во время транзакции и получит тайм-аут, и все работы будут возвращены. Но я хочу, чтобы служба завершила свою работу даже после того, как прошло время транзакции. Как я могу это достичь? Мы используем EJB3 в WebLogic 11g с помощью jdk 1.6.25.Завершить работу над EJB3 даже после таймаута
ответ
Вы можете установить таймаут транзакции: Services -> JTA, установить значение параметра Timeout Seconds. По умолчанию это значение составляет 30 секунд.
Если ваши транзакции очень длинные, возможно, вы изменили архитектуру своего приложения. Вы можете вставлять строки без транзакций (но вы можете потерять согласованность данных) или использовать обновление butch с одной порцией данных на транзакцию.
Для ввода строк без транзакции вы можете использовать @TranscactionAttribute с TransactionAttributeType.NOT_SUPPORTED.
Попробуйте JMS с MDB для длительных процессов.
Если согласованность не является проблемой и она проверена в другом месте, вам следует обновить записи базы данных за пределами области ttransaction. Поэтому сохраните все, что нужно, чтобы перейти на db в месте, где он быстро. И пусть фактическая вставка db произойдет в сеансе без транзакции позже.
- 1. Не удалось завершить работу над некоторыми файлами
- 2. Завершить процесс после таймаута с помощью VBScript
- 3. Завершить работу
- 4. Завершить работу после убийства всех нитей android
- 5. Завершить работу WebWorker (Javascript)
- 6. Как завершить работу com.sun.net.httpserver.HttpServer?
- 7. Завершить работу в android?
- 8. Завершить работу андроида через Cordova
- 9. Как остановить, завершить, завершить работу и выйти?
- 10. Завершить работу при прокрутке вправо?
- 11. Завершить работу Android в BroadcastReceiver?
- 12. Хау делает Seam инъекции работу в ejb3
- 13. Как завершить работу в Android?
- 14. завершить работу с пользовательского BaseAdapter
- 15. Как завершить работу в Matlab?
- 16. wxPython не удается завершить работу
- 17. Как правильно завершить работу log4j2
- 18. Завершить работу приложения в android
- 19. console.log завершить работу в Chrome
- 20. Как завершить работу службы ChromeDriver?
- 21. noflo не может завершить работу
- 22. Как завершить работу поставщика SunPKCS11 после его инициализации?
- 23. Quartz - Как завершить работу и перезапустить планировщик?
- 24. Не удается завершить работу скрипта python
- 25. condition_variable :: wait_for метод не возвращается - даже после таймаута
- 26. ExecutorService.awaitTermination (timeout, unit) продолжают работать даже после таймаута
- 27. Тайм-аут приложения Android даже после установки таймаута AsyncHttpClient
- 28. spring MVC Вызываемое исполнение продолжается даже после таймаута запроса?
- 29. Console.Clear() после таймаута
- 30. Завершить пакетную работу перед убийством через стену
Мы используем своего рода пакетную обработку для больших наборов данных, но тогда вы можете только обеспечить согласованность данных в одном наборе, а не по всем наборам, потому что у вас нет одной большой транзакции. – Smutje
Наша система проектируется таким образом, что согласованность проверяется еще где раньше. Поэтому согласованность не является проблемой. – TigerCoder
Вам нужно знать окончательный результат этой обработки перед возвратом из метода? – jpkrohling