Powiedzmy, że mam dwie aplikacje, każda z osobnym plikiem EAR, które wywołują się nawzajem w ramach tej samej transakcji JTA. Jeśli oba mają tego samego uczestnika, czy otrzymają tę samą sesję lub za każdym razem są tworzone za każdym razem?Dwa pliki EAR, ten sam podmiot współdzielący JPA, ta sama transakcja => ta sama sesja?
Odpowiedz
EntityManager (w JPA) jest mniej więcej równoznaczny z sesją (w trybie hibernacji). W czystej aplikacji JPA używałbyś tylko EntityManager. Obejmuje sesję. Sesja trwa tak długo, jak żyje EntityManager.
Nie ma powodu (i jak sądzę nie ma mowy) do dzielenia się EntityManager między dwiema aplikacjami, ponieważ działają one w różnych maszynach JVM (przynajmniej na serwerach aplikacji, z którymi pracowałem). To, co możesz zrobić, to udostępnić EntityManager setup (zwaną Jednostką Persistence Unit). Możesz to zrobić, umieszczając klasy encji i XML w JAR i używając ich z obu aplikacji, ale to, jak dokładnie to zrobisz, zależy prawdopodobnie od twojego serwera aplikacji. Z pewnością będzie miał dokładnie taki sam efekt, jak tylko duplikowanie klas i XML dla drugiej aplikacji.
Co się stanie: każda z dwóch aplikacji będzie miała własny kontekst utrwalania. Oznacza to, że po załadowaniu encji w jednej aplikacji nie zostanie ona załadowana w drugiej. Jeśli załadujesz i zmodyfikujesz jednostkę w aplikacji pierwszej, a następnie załadujesz ją do aplikacji drugiej, aplikacja druga zobaczy niezmodyfikowaną jednostkę (z wyjątkiem sytuacji, gdy masz bardzo dziwne ustawienia izolacji transakcji, jedna z nich decyduje się najpierw opróżnić obiekt).
Wszelkie konflikty pojawią się tylko na końcu transakcji JTA. Nie wiem, co się wtedy stanie i myślę, że zależy to od ustawień bazy danych i transakcji. Prawdopodobnie transakcja zostanie wycofana, jeśli obie aplikacje będą próbowały robić różne rzeczy na tych samych danych. Każda aplikacja będzie miała własne połączenie z bazą danych. Są powiązane przez transakcję JTA, więc tam, gdzie jest zapewnione, zarówno jeden, jak i drugi, wycofać.
- 1. Ten sam kod, ta sama przeglądarka, inne zachowanie dla użytkowników
- 2. Ta sama wartość id (float)
- 3. Ta sama treść, różne pliki MD5 - Plik i ciąg
- 4. Oracle AQ ta sama wiadomość jest dostarczana dwa razy:
- 5. wkhtmltopdf - ta sama konfiguracja różni się wyjściem
- 6. Ta sama nazwa indeksu dla dwóch tabel
- 7. Ta sama tabela w Entity Framework
- 8. Wiele modeli Django, ta sama tabela
- 9. Wiele dziedziczenia: ta sama nazwa zmiennej
- 10. Ta sama metoda dla wielu klas, które implementują ten sam interfejs
- 11. wsimport - Dwie deklaracje powodują kolizję, ta sama linia podana
- 12. Tabele zapytań dla wielu najemców (ta sama nazwa tabeli)
- 13. ta sama funkcja dla dwóch przycisków w jQuery
- 14. Wykreślanie dwóch zmiennych za pomocą ggplot2 - ta sama oś x
- 15. Jak ta sama polityka pochodzenia ma zastosowanie do adresów IP?
- 16. Cascade Usuń, ta sama tabela, Entity Framework 4 Code First
- 17. WCF: Ta sama usługa w przypadku wielu metod.
- 18. Ta sama wysokość dla wierszy tabel przy użyciu CSS
- 19. Ta sama wydajność dla różnych pracowników w procesie wieloprocesowym
- 20. Różne dane wyjściowe, ta sama nazwa użytkownika i hasło
- 21. Czy "curry" i "kompozycja" to ta sama koncepcja w JavaScript?
- 22. Ta sama tabela, centrum powiadomień i serwer dla dwóch aplikacji
- 23. Zapytanie Różne bazy danych - Ta sama tabela SQL Server 2012
- 24. Ta sama metoda dla wielu klas w R
- 25. Nawigacja po routerze nie wywołuje ngOnInit, gdy ta sama strona
- 26. mso-data-placement: ta sama komórka nie działa
- 27. HTML5 Canvas getImageData i ta sama polityka Origin
- 28. Ta sama nazwa atrybutu Androida w dwóch bibliotekach, kolizja nazw
- 29. Ta sama polityka dotycząca pochodzenia w Layman Warunki
- 30. Znaleziono wiele typów pasujących do kontrolera o nazwie "Strona główna". (Dwa obszary, ta sama nazwa kontrolera)
czy aplikacje udostępniają pliki klas? –
yes, the entities and some common api – Mauli
Czy skonfigurowałeś swój kto mógł używać rozszerzonych kontekstów trwałości? – HDave