Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ejb, transakcije, JBoss

[es] :: Java :: Ejb, transakcije, JBoss

[ Pregleda: 1926 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

braneiv

Član broj: 68650
Poruke: 52
*.dynamic.sbb.co.yu.



Profil

icon Ejb, transakcije, JBoss26.01.2007. u 17:37 - pre 210 meseci
Problem je sledeci:

Imam Session Bean iz koga generisem web servis. Jedna njegova metoda
treba da bude u transakciji, ona potpuno brise bazu i upisuje nove podatke
u nju. Znaci, potrebno je da se transakcija rollbackuje ako dodje do bilo kakvog
Exepctiona. Prvo sam probao sa tzv. deklarativnim (Container managed)
transakcijama. Za tu metodu sam stavio XDoclet tag:

@ejb.transaction type="Required"

Kada sam pokusao da izazovem rollback desio mi se sledeci Exception:

Code:

ERROR [LogInterceptor] TransactionRolledbackLocalException in method: 
public abstract com.ccc.projekat.entity.KolaLocal com.ccc.projekat.entity.KolaLocalHome.create
(int,java.lang.String,com.ccc.projekat.entity.KolaLocal) throws javax.ejb.CreateException, causedBy:
java.lang.IllegalArgumentException: The instance was cascade-deleted: pk=[.21.]


A transakcija nije rollbackovana.

Posle toga sam probao i sa UserTransaction (Bean managed) i desio se isti exception
jos prije nego sto sam i pozvao transakcija.rollback() (sto valjda znaci da je kontejner
sam pokusao da rollbackuje... nebitno). Uglavnom, u oba slucaja sam ostao sa
praznom bazom, znaci nisu unijeti novi podaci niti su vraceni stari.
Zar transakcije ne bi trebalo da osiguraju da ne dodje do ovakao necega...
ili (sto je vjerovatnije) ja negdje grijesim?




[Ovu poruku je menjao braneiv dana 26.01.2007. u 19:47 GMT+1]
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
212.200.221.*



+13 Profil

icon Re: Ejb, transakcije, JBoss26.01.2007. u 20:41 - pre 210 meseci
Mozes da pustis kontejner da brine o transakciji, ali onda moras da imas u vidu da ti je jedna metoda jedna transakcija.

E sad, ako imas neki kod, a catch-uje izuzetke, i kad ti nesto pukne, taj izuzetak se obradi (pa makar bio i printStackTrace), transakcija nece biti rollbackovana, jer si je hendlovao.

Pokusaj da eliminises try/catch, a u potpis stavi throws Exception, pa probaj onda.

V
 
Odgovor na temu

braneiv

Član broj: 68650
Poruke: 52
*.dynamic.sbb.co.yu.



Profil

icon Re: Ejb, transakcije, JBoss26.01.2007. u 23:29 - pre 210 meseci
Hvala na javljanju.


Citat:
Vanja Petreski: Mozes da pustis kontejner da brine o transakciji, ali onda moras da imas u vidu da ti je jedna metoda jedna transakcija.


Pa to mi odgovara, bar sam mislio da mi odgovara, ali exception se desi, a rollback ne.



Citat:
Vanja Petreski:
E sad, ako imas neki kod, a catch-uje izuzetke, i kad ti nesto pukne, taj izuzetak se obradi (pa makar bio i printStackTrace), transakcija nece biti rollbackovana, jer si je hendlovao.


Ako u tom catchu (ili vise njih) rollbackujem transakciju, zar to ne bi trebalo da radi (kod mene, normalno, ne radi)?
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
212.200.221.*



+13 Profil

icon Re: Ejb, transakcije, JBoss27.01.2007. u 07:58 - pre 210 meseci
Da budem iskren, nisam se do sada bavio bean managed transakcijama, jer za to jos uvek nisam imao potrebu. Container managed transakcije mi lepo zavrsavaju posao, na nacin koji sam ti rekao.

Medjutim, ono sto ti pricas mi zvuci sasvim logicno, to recimo radi kod cistog JDBC-a. Prvo iskljucim auto commit, pa onda try deo gde ide transakcija, gde je na kraju commit, pa onda catch deo koji loguje gresku i radi rollback i na kraju finally koji mi vraca auto commit na on. Ako radi u JDBC-u, nema razloga da ne radi u EJB-u, tako da verovatno ti negde gresis.

Kao i obicno, baci relevantno parce koda ovde, da neko ko ima vise iskustva sa bean managed transakcijama moze da ti pomogne. A mozda i mi zajedno uocimo gde je problem ;)

V

[Ovu poruku je menjao Vanja Petreski dana 27.01.2007. u 09:57 GMT+1]
 
Odgovor na temu

[es] :: Java :: Ejb, transakcije, JBoss

[ Pregleda: 1926 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.