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!
Nie wiem jak na Felixie, ale na Equinoxie nie trzeba wyłączać javax.transaction jako pakietu systemowego.
OdpowiedzUsuńWystarczy:
1. zainstalować jta z wyeksportowaną wersją 1.1
2. w swoim pakunku zaimportować javax.transaction z wersją 1.1
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ńUżywałem javax.transaction:jta:1.0.1 z manifestem dodanym przez maven-bundle-plugin wg zasad:
OdpowiedzUsuń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..