我正在使用EJB和SpringMVC的应用程序中使用Hibernate验证器。我使用的是JBoss5、Hibernate3和SpringMVC版本3。
我想尝试在Spring异常解决程序级别捕获验证异常,并基于
InvalidStateException
消息。我不想将异常处理逻辑放在数据访问层中;我希望它由注释驱动,并且只在一个集中的地方处理验证错误。
正在正确验证域模型,类型为的异常
无效状态异常
当我试图创建一个无效的实体(例如违反字段的长度约束)时,会如预期的那样抛出。在尝试捕捉Spring异常解析器实例中的异常时,我发现原来的异常已经消失,并且
javax.ejb.EJBTransactionRolledbackException
已经取代了它。原始异常不在“原因列表”中。
我的第一个猜测是
org.hibernate.validator.InvalidStateException
没有注释
ApplicationException
,因此我安装了一个Hibernate事件侦听器,捕获了原始异常,并将其作为注释为
应用程序异常
. 这没有效果。
另一个复杂性是,Web层通过远程接口调用EJB。我用注释说明了我的异常类
WebFault
但无济于事。
我应该怎么做才能确保异常气泡一直上升?