24 października 2009

Użycie javax.transaction.TransactionManager w OSGi z Apache Felix

Jeszcze przed Warsjawą byłem gotów do opublikowania moich doświadczeń z "OSGifikacji" OpenEJB, więc wrażenia z dzisiejszej, zwinnej Warsjawy pojawią się w kolejnym wpisie. Muszę się jeszcze nad nimi zastanowić, aby były odczytane właściwie.

Wracając do tematu przewodniego tego wpisu - OSGi, podczas wspomnianej osgifikacji natrafiłem na początkowo nietrywialny problem związany z dostępnością pakietu javax.transaction i jego interfejsu TransactionManager. Sama platforma Javy - JRE - dostarcza pakiet javax.transaction, więc OSGi również. Idąc jednak ku rozwiązaniom Java EE, gdzie korzysta się z javax.transaction.TransactionManager prowadzi to do nieoczekiwanych komplikacji i praca początkowo zaplanowana przeze mnie na kilka kwadransów skończyła się po kilku...godzinach o 3 nad ranem. Miało już nie być takich numerów z nocnymi nasiadówami, ale po prostu nie mogłem się oprzeć. Jeszcze tylko to, tylko to i będzie koniec. Był - problemu i mój! :)

Spisałem swoje doświadczenia w kolejnym artykule Użycie javax.transaction.TransactionManager w OSGi z Apache Felix, abyście nie musieli tracić czasu na rozwiązywanie problemów, które już nimi nie są. To właśnie nazywamy doświadczeniem, a skoro ja je mam (w kontekście OSGi i javax.transaction), to i Wy. Proste!

3 komentarze:

  1. Nie wiem jak na Felixie, ale na Equinoxie nie trzeba wyłączać javax.transaction jako pakietu systemowego.
    Wystarczy:
    1. zainstalować jta z wyeksportowaną wersją 1.1
    2. w swoim pakunku zaimportować javax.transaction z wersją 1.1

    OdpowiedzUsuń
  2. Takie do mnie dochodziły słuchy. Korzystałeś może z JTA i Equinoksa? Z jakiego pakunku JTA korzystałeś? Gdzie było Ci to potrzebne? Pytam z czystej ciekawości.

    OdpowiedzUsuń
  3. Używałem javax.transaction:jta:1.0.1 z manifestem dodanym przez maven-bundle-plugin wg zasad:
    Export-Package: javax.transaction*;version=${jar.version},\
    javax.transaction.xa;version=${jar.version}

    Do tego Hibernate i Atomikos, całość na Equinoksie.

    Wykorzystanie było eksperymentalne, bo ostatecznie Atomikos nie został wykorzystany.
    Było to prawie 2 lata temu, więc wielu szczegółów nie pamiętam..

    OdpowiedzUsuń