문제

EJB 및 Spring MVC가있는 응용 프로그램에서 최대 절전 모드 유효성 검사기를 사용하고 있습니다. Jboss 5, Hibernate 3 및 Spring MVC 버전 3을 사용하고 있습니다.

Spring Exception Resolver 레벨에서 유효성 검사 예외를 시도하고 InvalidStateException 메시지. 데이터 액세스 계층에 예외 처리 로직을 넣고 싶지 않습니다. 나는 이것이 주석에 의해 구동되기를 원하고 하나의 중앙 집중식 장소에서 검증 오류를 처리하기를 원합니다.

도메인 모델이 올바르게 확인되고 있으며 유형을 제외하고 InvalidStateException 유효하지 않은 엔티티를 만들려고 할 때 예상대로 던져집니다 (예 : 필드에서 길이 제약을 위반). Spring Exception Resolver의 인스턴스에서 예외를 포착하려는 시점에서 원래 예외가 사라지고 javax.ejb.EJBTransactionRolledbackException 그 자리를 차지했습니다. 원래 예외는 목록으로 인해 발생하지 않습니다.

내 첫 추측은 그 것입니다 org.hibernate.validator.InvalidStateException 주석이 달리지 않았습니다 ApplicationException, 그래서 최대 절전 모드 이벤트 리스너를 설치하고 원래 예외를 잡아서 ApplicationException. 이것은 효과가 없습니다.

한 가지 복잡성은 웹 계층이 원격 인터페이스를 통해 EJB를 호출하고 있다는 것입니다. 예외 클래스에 주석을 달았습니다 WebFault, 그러나 아무 소용이 없습니다.

예외 거품을 끝까지 보장하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

이 시도?

보호 된 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; }

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top