Zdravím, na konferenci už se něco podobného řešilo, jsou to vlastnosti
EJB, zkuste se podívat na předchozí diskuzi, to to jen jiná vyjímka:
http://www.java.cz/konference/2006-December/009936.html
Ondřej Fafejta napsal(a):
Zdravím konferenci!
Pokud na straně EJB vyhodím výjímku typu RunTimeException, tak se mi
ke klientovi dostane EJBException.
Tedy klient vůbec neví, jaká výjímka nastala.
Je možné někde v glassfishi nastavit, aby se klientovi poslala
skutečná vyhozená výjímka?
=========================
Pozn. pokud vyhodíme výjímku typu Exception, tak se ke klientovi
dostane správná výjímka.
Ovšem pozor: pokud změníte nějaká data v načtené etnitě, tak se změny
projeví, i když vyhodíte Exception.
Např.
public void updateEntity(MyEntity e) throws MyException{
MyEntity toUpdate=em.find(MyEntity.class, e.getId());
toUpdate.setName("UPRAVENE JMENO");
throw new MyException("Vlastni vyjimka -- extends Exception!");
}
Po vyhození výjímky se do entity toUpdate uloží změny - to je trochu
nečekané, co? ;-)
Proto by se měly na straně EJB vyhazovat výjímky typu RunTimeException.
Tam tento problém nenastává.
viz. specifikace ejb-3_0-fr-spec-persistence.pdf
str. 64 dole.
Fafi
--
S pozdravem
Jan Karhánek, DiS.
ICQ: 152742301
Tel: +420 608 172 433
web: http://www.hany.info/