Имам Java SE(!) сценарий с JMS и JPA, където може да имам нужда от разпределени транзакции, както и от „обикновени“ JDBC транзакции. Трябва да слушам опашка, която изпраща заявки за услуги, да поддържам регистър при получаване, да обработя заявката и да актуализирам регистрационния файл, след като заявката бъде обработена. Съобщението ще бъде потвърдено само ако заявката е обработена успешно.
Първата идея беше да се използва само JTA (предоставен от Bitronix). Но там се сблъсквам с два проблема:
- няма да се поддържа регистър, ако заявката не може да бъде обработена
- заявката няма да бъде обработена, ако регистрационният файл не може да бъде актуализиран (малко вероятно, но все пак възможно)
Така че другата идея е да създадете и актуализирате регистрационния файл с редовни JDBC транзакции. Само мениджърът(ите) на обекти за транзакцията(ите) на заявката ще се присъединят към потребителските транзакции, а мениджърите на обекти за създаване и актуализиране на регистрационния файл ще се ангажират директно.
Възможно ли е да се "смесят" JTA и JPA на една единица за устойчивост? Или вече имаме модели за тези видове JMS и JDBC транзакции?