2011-08-05 18 views
9

Spotykamy scenariusz, który działa z wieloma wątkami.jak udostępnić jedną transakcję między wieloma wątkami

W głównym wątku, zrób trochę logiki i zaktualizuj bazę danych, w punkcie wywoła inną usługę do aktualizacji bazy danych, która jest uruchamiana w innym wątku.

Chcemy, aby te dwa wątki miały tę samą transakcję, co oznacza, że ​​albo operacja w wątku się nie powiedzie, a następnie operacja w innym wątku również zostanie wycofana.

Ale pracuję przez kilka dni, znalazłem kilka postów, które mówią, że JTA nie obsługuje wielu wątków. obecnie używamy Bitronix jako dostawcy JTA, czy istnieje jakakolwiek instytucja, jeśli Bitronix obsługuje wiele wątków w jednej Transakcji? czy jest jakiś inny dostawca JTA obsługujący to (autonomiczny dostawca JTA, a nie kontener J2EE)?

Odpowiedz

9

"Wiele wątków może być jednocześnie powiązanych z tą samą transakcją globalną." - JTA spec v1.1, sekcja 3.2, strona 13.

JBossTS poradzi sobie z tym bez problemu. Sprawdzone zachowanie transakcji na bok, trudność nie jest tak naprawdę menedżer transakcji. Potrzebujesz również poprawnej obsługi połączeń z menedżerem zasobów, np. Bazą danych. Jeśli współdzielisz jedno połączenie między wątkami, niekoniecznie zostanie uruchomione seryjne przyspieszenie, ponieważ jest to potencjalne wąskie gardło, chyba że sterownik obsługuje wydajne multipleksowanie. Z drugiej strony, jeśli korzystasz z wielu połączeń, musisz upewnić się, że sterownik wdroży metodę isSameRM w sposób rozsądny, aby uniknąć 2PC, a także zezwolić na udostępnianie blokady gałęzi transakcji (ścisłe powiązanie), jeśli wątki muszą widzieć wzajemne niezatwierdzone zmiany w db. Więc oprócz dobrego menedżera transakcji będziesz potrzebował dobrego menedżera połączeń, np. Implementacja JCA i dobry sterownik bazy danych. Powodzenia w znalezieniu tych.

+1

Dzięki Uncredited! Sprawdziłem specyfikację JTA. Znalazłem słowa. i kiedy zadaję pytanie na forum BTM, mówią, że BTM nie obsługuje tej funkcji. niektórzy sugerują Jboss TS lub Atomics, dobrze, że nie próbowałem dwóch. – Scarlett

+0

@scarlet znalazłeś rozwiązanie? Plz dzieli się swoimi odkryciami. –

+1

Nie mam pojęcia, do tej pory, zmienię użycie tylko jednego wątku. jak o tobie? – Scarlett

Powiązane problemy