Frage

Ich verwende Hibernate Validator in einer Anwendung mit EJB und Spring MVC. Ich verwende JBoss 5, Hibernate 3 und Spring MVC Version 3.

Ich möchte versuchen und fangen Validierung Ausnahmen bei Spring Exception Resolver Ebene und erzeugen eine Fehlermeldung auf der Grundlage der InvalidStateException Nachricht. Ich möchte nicht, Ausnahmebehandlung Logik in der Datenzugriffsschicht setzen; Ich möchte dies durch Anmerkungen angetrieben werden und nur die Validierungsfehler an einem zentralen Ort zu behandeln.

Das Domänenmodell korrekt verifiziert wird und eine Ausnahme vom Typ InvalidStateException wie erwartet ausgelöst, wenn ich versuche, eine ungültige Einheit zu schaffen (beispielsweise eine Längenbeschränkung auf einem Feld verletzen). An dem Punkt, zu versuchen, die Ausnahme in meiner Instanz einer Feder Ausnahme Resolver zu fangen, finde ich meine ursprüngliche Ausnahme ist verschwunden, und ein javax.ejb.EJBTransactionRolledbackException hat seinen Platz eingenommen. Die ursprüngliche Ausnahme ist nicht in der Liste durch.

Meine erste Vermutung war, dass org.hibernate.validator.InvalidStateException nicht mit ApplicationException kommentiert, so dass ich einen Hibernate-Ereignis-Listener installiert, fing die ursprüngliche Ausnahme und rethrew es als eine neue Ausnahme mit ApplicationException kommentiert. Dies hat keine Auswirkungen.

Eine weitere Komplexität ist, dass das Web-Tier EJBs über eine Remote-Schnittstelle aufruft. Ich kommentierte meine Ausnahmeklasse mit WebFault, aber ohne Erfolg.

Was kann ich tun, um die Ausnahme zu gewährleisten Blasen den ganzen Weg bis?

War es hilfreich?

Lösung

Versuchen Sie das?

protected InvalidStateException extractValidationException(Throwable ex) { Throwable e = ex; while (e != null) { if (e instanceof InvalidStateException) { return (ValidationException) e; } else if (e instanceof EJBException) { e = ((EJBException) e).getCausedByException(); } else { e = e.getCause(); } } return null; }

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top