【发布时间】:2009-11-12 18:35:00
【问题描述】:
我在带有 EJB 和 Spring MVC 的应用程序中使用 Hibernate Validator。我正在使用 JBoss 5、Hibernate 3 和 Spring MVC 版本 3。
我想尝试在 Spring Exception Resolver 级别捕获验证异常,并根据 InvalidStateException 消息生成错误消息。我不想把异常处理逻辑放在数据访问层;我希望它由注释驱动,并且只在一个集中的地方处理验证错误。
当我尝试创建无效实体(例如,违反字段的长度限制)时,域模型正在被正确验证,并按预期抛出了 InvalidStateException 类型的异常。在尝试在我的 Spring 异常解析器实例中捕获异常时,我发现我的原始异常已经消失并且 javax.ejb.EJBTransactionRolledbackException 已取而代之。原始异常不在引起列表中。
我的第一个猜测是org.hibernate.validator.InvalidStateException 没有用ApplicationException 注释,所以我安装了一个Hibernate 事件侦听器,捕获了原始异常并将其重新抛出为一个用ApplicationException 注释的新异常。这没有效果。
另一个复杂性是 Web 层通过远程接口调用 EJB。我用WebFault 注释了我的异常类,但无济于事。
我应该怎么做才能确保异常冒泡?
【问题讨论】:
标签: java hibernate exception-handling ejb hibernate-validator