سؤال

أنا أستخدم Validator السبات في تطبيق مع EJB و SPRING MVC. أنا أستخدم JBoss 5، السبات 3 و الربيع MVC الإصدار 3.

أرغب في محاولة واستثناءات التحقق من الصحة في مستوى محلي استثناء الربيع وإنشاء رسالة خطأ بناء على InvalidStateException رسالة. لا أريد أن أضع منطق معالجة الاستثناءات في طبقة الوصول إلى البيانات؛ أريد أن يكون هذا مدفوعا بالشروح والتعامل مع أخطاء التحقق من الصحة في مكان مركزي واحد.

يتم التحقق من طراز المجال بشكل صحيح واستثناء النوع InvalidStateException يتم إلقاؤه كما هو متوقع عندما أحاول إنشاء كيان غير صالح (على سبيل المثال انتهاك قيود طول على حقل). عند محاولة التقاط الاستثناء في مثلي من محلل استثناء الربيع، أجد استثناءي الأصلي قد اختفى و javax.ejb.EJBTransactionRolledbackException وقد اتخذ مكانها. الاستثناء الأصلي ليس في القائمة الناجمة.

تخميني الأول كان ذلك org.hibernate.validator.InvalidStateException لم يتم تفاحها مع ApplicationException, ، لذلك قمت بتثبيت مستمع حدث السبات، اشتعلت الاستثناء الأصلي وإعادة إيثائه كإجراء استثناء جديد ApplicationException. وبعد هذا ليس له أي تأثير.

تعقيد آخر واحد هو أن مستويات الويب هو استدعاء EJBS عبر واجهة عن بعد. لقد أعلنت فئة الاستثناء الخاصة بي WebFault, ، ولكن دون جدوى.

ماذا يجب أن أفعل لضمان فقاعات الاستثناء على طول الطريق؟

هل كانت مفيدة؟

المحلول

جرب هذا؟

Protected StrandStateExceptionals StrictValidationException (Readable EX) {Realable E = EX؛ بينما (ه! = NULL) {IF (E InstanceOf InstanceStateException) {return (valessationException) e؛ } آخر إذا (E InstanceOf EJBException) {E = ((EJBExceptive) E) .getCausedByException ()؛ } آخر {e = e.getcause ()؛ }} إرجاع فارغة؛ }

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top