2013-04-04 8 views
5

Najlepszy wysiłek 1PC jest ładnie opisany w this post. Autor, David Syer, który pracuje dla SpringSource, dostarczył implementację ChainedTransactionManager rozszerzającą klasę Spring AbstractPlatformTransactionManager.Implementacja Spring ChainedTransactionManager zgodnie z wzorcem "best effort 1PC"

Ten szczególny menedżer transakcji może rozpocząć n transakcji, na przykład, JDBC lub JMS sesji i wykonywać popełnienia/wycofywania z wykorzystaniem n wystąpienia AbstractPlatformTransactionManager, po jednym zasobie. Jest to bardzo przydatne, gdy sterowniki XA nie są dostępne. Ponieważ post jest bardzo stary, kod działa dobrze z wersją Spring 2.5, ale kończy się niepowodzeniem w Spring 3+.

Istnieje request ticket do realizacji podobnej funkcji w Spring 3+. Jestem gotów spróbować, ale pomyślałem, że najpierw zapytam: czy są jakieś implementacje?

Dzięki

+1

Myślę, że możesz spróbować użyć ChainedTransactionManager z wiosennych danych-neo4j, ale jaka baza danych w dzisiejszych czasach nie zapewnia sterownika xa? Jeśli potrzebujesz innego pomysłu, ten blog http://infinispan.blogspot.com.ar/2011/06/faster-infinispan-based-second-level.html pokazuje, jak system buforowania przechwytuje synchronizację JTA, aby uniknąć XA, w warunki wykonania. – Luciano

+0

Dzięki, że używam tego teraz, ktoś zasugerował to na Spring Jira. Na przykład Vectorwise nie zapewnia sterownika XA. Giovanni –

+0

Witam Giovanni, próbujemy również wykonać podobną konfigurację dla naszej wiosennej aplikacji wsadowej z wykorzystaniem najlepszego wysiłku 1PC wzór. Czy możesz nam powiedzieć, jakie masz doświadczenie w stosowaniu tego podejścia? Jeśli możesz podać nam przykładowy plik konfiguracyjny dla odniesienia, byłoby to bardzo pomocne. mój identyfikator e-mail to [email protected] Z góry dziękuję – Ravikiran763

Odpowiedz

3

Jak sugeruje Luciano, znalazłem realizację doskonale działającą ChainedTransactionManager w:

<dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-neo4j-tx</artifactId> 
    <version>2.2.0.RELEASE</version> 
</dependency> 

nazwa klasy: org.springframework.data.neo4j.transaction.ChainedTransactionManager

EDIT:

ChainedTransactionManager jest teraz część Spring Data Commons od version 1.6.1.

+0

Hej, czy wiecie, że wiele przykładów ChainedTransactionManager (teraz przeniesionych do Spring Data Commons) może być używanych z różnych wątków do obsługi transakcji w różnych zasobach? Czy MUSI to być singleton? –

+1

@Giovnni Botta Zgadnij, kto jest starym kodem, nad którym pracuję? :) –

+1

@ JohnHumphreys-w00te powodzenia z tym! –