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