Różnica między "JTA-datasource" i "resource-local" datasource?
Terminy "JTA-datasource" i "resource-local datasource" są dla mnie trochę niejasne. Odkładam to, co rozumiem ( lub zakładam) i chciałbym, żebyś powiedział, Gdzie mam rację / źle.
- ta sama baza danych może być określana jako jta-datasource lub jako resource local datasource
- jeśli są wymienione jako JTA-datasource, wtedy beans / inne klasy mogą używać JTA. Stąd interfejs UserTransaction
- nie można użyć CMT / BMT jeśli źródło danych is resource local
- jeśli są wymienione jako lokalne źródło danych zasobów, transakcje nie są świadome JTA. Kod może używać interfejsu Entitransaction, ale nie interfejsu UserTransaction
Dzięki!
1 answers
Terminy "JTA-datasource" i "resource-local datasource" są dla mnie trochę niejasne.
Myślę, że faktycznie odnosisz się do jta-datasource
i non-jta-datasource
elementów. W skrócie:
- jeśli typem transakcji jednostki trwałości jest JTA , element
jta-datasource
jest używany do deklarowania nazwy JNDI źródła danych JTA, które będą używane do uzyskiwania połączeń. Jest to powszechny przypadek. - Jeśli typ transakcji jednostki trwałości jest resource-local ,
non-jta-data-source
powinny być używane do deklarowania nazwy JNDI źródła danych spoza JTA.
Baza danych może być określana jako jta-datasource lub jako resource local datasource.]}
To jest poprawne. I nie wspomniałem o tym tuż powyżej, ale niektórzy dostawcy nawet pozwalają zadeklarować zarówno jta-datasource
i a {[1] } i użyj later do zoptymalizowanego odczytu przez połączenia nie-JTA (tzn. nie będą powiązane z trwająca transakcja JTA).
Pierwsza część jest poprawna, ostatnia nie do końca. W 2007 roku, po raz pierwszy w historii firmy, w 2008 roku, firma została założona w 2009 roku, a w 2009 roku została założona w 2009 roku.]}
- jeśli są wymienione jako JTA-datasource, wtedy beans / inne klasy mogą używać JTA. Stąd interfejs UserTransaction.
[[17]}metody biznesowe przedsiębiorstwa [...] nie wolno próbować uzyskać ani używać javax.transaction.UserTransaction
interfejs.
I sekcja 16.12 interfejs UserTransaction :
Kontener nie może udostępniać interfejsu
UserTransaction
dla ziaren enterprise, które nie mogą korzystać z tego interfejsu.
Innymi słowy, interfejs UserTransaction
nie jest dostępny dla CMT enterprise beans.
- nie można użyć CMT / BMT, jeśli źródłem danych jest resource local
Sformułowanie jest tutaj trochę mylące, ale powiedziałbym że nie jest to ściśle poprawne. Ze specyfikacji JPA 1.0, sekcja § 5.5 transakcje kontrolne :
Menedżer jednostek zarządzanych aplikacjami może być menedżerem jednostek JTA lub menedżerem jednostek zarządzających zasobami lokalnymi.
...
Zarówno menedżerowie jednostek JTA, jak i resource-local entity managerowie muszą być obsługiwani w kontenerach Java EE web i EJB. W środowisku EJB menedżer jednostek JTA jest zazwyczaj używany.
I sekcja 6.2.1.2 Rodzaj transakcji
Atrybut
transaction-type
jest używany do określenia, czy menedżerowie jednostek dostarczani przez fabrykę menedżerów jednostek dla jednostki trwałości muszą być menedżerami jednostek JTA lub menedżerami jednostek zasobów lokalnych. Wartość tego elementu toJTA
lubRESOURCE_LOCAL
. Typ transakcji JTA zakłada, że zostanie dostarczone źródło danych JTA-jak określono w elemenciejta-data-source
lub dostarczone przez kontener. Ogólnie, w środowisku Java EE, atransaction-type
ofRESOURCE_LOCAL
zakłada, że zostanie dostarczone źródło danych spoza JTA. W środowisku Java EE, jeśli ten element nie jest określony, domyślnym jest JTA.
Więc możesz użyć application managed entity manager, który może być resource-local entity manager (musisz wprowadzić EntityManagerFactory
, aby uzyskać EM z niego w tym przypadku) i nie będzie częścią transakcji JTA. Zobacz tę (bardzo ciekawą) dyskusję .
- jeśli są wymienione jako lokalne źródło danych zasobów, transakcje nie są świadome JTA. Kod może używać interfejsu Entitransaction, ale nie interfejsu UserTransaction
Ponownie, sformułowanie jest nieco mylące, ale powiedziałbym, że jest to poprawne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-10 06:54:30