Domanda

Sto usando Hibernate Validator in un'applicazione con EJB e Spring MVC.Sto usando JBoss 5, Hibernate 3 e Spring MVC versione 3.

Mi piacerebbe provare a prendere eccezioni di convalida Primavera Eccezione Resolver livello e generare un messaggio di errore basato sul InvalidStateException messaggio.Non voglio mettere logica di gestione delle eccezioni nel livello di accesso ai dati;Voglio che questo sia guidato da annotazioni e solo gestire gli errori di validazione in una posizione centralizzata.

Il modello di dominio è di essere correttamente e di un'eccezione di tipo InvalidStateException viene generata come previsto quando cerco di creare un valido entità (ad es.violare un vincolo di lunghezza su un campo).Al punto di cercare di intercettare l'eccezione nel mio esempio di una Molla Eccezione resolver, ho trovato il mio eccezione originale è scomparso e un javax.ejb.EJBTransactionRolledbackException ha preso il suo posto.L'eccezione originale non è causato dalla lista.

Il mio primo pensiero fu che org.hibernate.validator.InvalidStateException non era annotato con ApplicationException, così ho installato una Sospensione di listener di eventi, ha catturato l'eccezione originale e rethrew come una nuova eccezione annotato con ApplicationException.Questo non ha alcun effetto.

Una ulteriore complessità è che il livello web è chiamata Ejb tramite un'interfaccia Remota.Ho annotato la mia classe di eccezione con WebFault, ma senza alcun risultato.

Cosa devo fare per garantire l'eccezione bolle fino?

È stato utile?

Soluzione

Provare questo?

protetto InvalidStateException extractValidationException(Throwable ex) { Throwable e = ex;mentre (e != null) { se (e instanceof InvalidStateException) { ritorno (ValidationException) e;} else if (e instanceof EJBException) { e = ((EJBException) ed e).getCausedByException();} else { e = e.getCause();} } return null;}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top