【发布时间】:2009-09-10 02:08:24
【问题描述】:
我有一些使用 Hibernate 将数据持久保存到数据库的 EJB。我有一个与这些 EJB 对话的厚 Swing 客户端。客户端对数据库一无所知(没有驱动程序 jar)。
在一个事务期间,可能会引发 Hibernate ConstraintViolationException。我捕获所有异常并将它们包装在 EJBException 中,如下所示:
catch(HibernateException e) {
e.printStackTrace();
throw new EJBException(e);
}
我遇到的问题是,当客户端的 JBoss Invoker 解组异常时,会抛出 ClassNotFoundException(对于 PSQLException),因为客户端在类路径中没有 sql 驱动程序 jar。
我将此应用程序更改为始终将捕获的异常传递给 ejbexception 构造函数,这样我们就可以获得堆栈跟踪历史记录。现在我找到了为什么最初的开发人员没有这样做。
此时我看到了两个选项 - 要么将 postgres 驱动程序 jar 包含在客户端中,要么删除将捕获的异常传递给 EJBException 构造函数。我很好奇是否有人有任何其他建议以及其他人如何处理其 EJB 中的异常?
【问题讨论】: