Podobny problem jsem resil, bude zrejme skryty v praci s transakcemi. Transakce je zde vazana na metodu update a JBOSS ji "commituje" az po ukonceni metody. Pokud pouzijes metodu manager.flush() EntityManageru v tele update(), dojde k synchronizaci s databazi (void flush() Synchronize the persistence context to the underlying database.) a muzes odchytit vyjimku PersistenceException. Z ni se pak pa vydestilovat puvodni pricina. Pouzivam toplink a k PSQLException se pak dostanu v obsluzne metode (v EJB) nejak takhle:

//odchycena vyjimka v tele update() po volani flush()
PersistenceException pex
...

DatabaseException dex = (DatabaseException)pex.getCause();

if (dex.getCause() != null &&
    dex.getCause().getClass().equals(PSQLException.class)) {
                return (PSQLException) dex.getCause();
}


Kdyz mas PSQLException, uz je vse easy :-)




URBAN Leos wrote:
Ahoj,
narazil jsem ted o vikendu na dva problemy - JBOSS 4.0.4, EJB3 RC8, PGSQL 7.4.

Mam SFSB a v nem business metodu:

public WorkbookRecord update( WorkbookRecord o)
throws Exception
{
  try
  {
    System.out.println("start");
    manager.merge(o);
    System.out.println("end");
  }
  catch (Exception e)
  {
     System.out.println("chyba");
     throw new Exception("Chyba");
  }
}


Z klienta umyslne poslu do metody update() delsi retezec nez je definice v databazi (Postgresql), klient korektne vyhlasi exception.

Jenze:
1) ta exception je vyhozena nekde jinde nez v te metode update(), neboli v logu je "start" a "end" a neni tam "chyba".

2) nahlasi exception Postgresql a protoze na klientu neni (logicky) JDBC ovladac tak detaily (stacktrace) nejsou k dispozici s chybou PSQLException ClassNotFound


Priznam se ze jsem to nejak nepochopil. Co kdyz budu potrebovat v update() vedet, ze ten zapis opravdu dopadl dobre?

Mate k tomu nekdo nejake poznatky? Zrejme delam neco spatne nebo jsem neco spatne pochopil.

Diky,
Leos


--
Milan Kratochvíl
---------------------------
email: [EMAIL PROTECTED]
ICQ:   135 673 844
tel:   736 435 725

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Odpovedet emailem