gpt4 book ai didi

java - 正确的 EJB 异常处理 - 来自客户端的 ClassNotFoundException

转载 作者:行者123 更新时间:2023-11-30 05:15:47 24 4
gpt4 key购买 nike

我有一些使用 Hibernate 将数据保存到数据库的 EJB。我有一个与这些 EJB 通信的厚 Swing 客户端。客户端对数据库一无所知(没有驱动程序 jar)。

在一个事务期间,可能会抛出 Hibernate ConstraintViolationException。我捕获所有异常并将它们包装在 EJBException 中,如下所示:

catch(HibernateException e) {
e.printStackTrace();
throw new EJBException(e);
}

我遇到的问题是,当客户端的 JBoss Invoker 解码异常时,会抛出 ClassNotFoundException(对于 PSQLException),因为客户端的类路径中没有 sql 驱动程序 jar。

我更改了此应用程序,始终将捕获的异常传递给 ejbeException 构造函数,这样我们就可以获得堆栈跟踪历史记录。现在我正在寻找为什么最初的开发人员没有这样做。

此时我看到两个选项 - 要么在客户端中包含 postgres 驱动程序 jar,要么删除将捕获的异常传递给 EJBException 构造函数。我很好奇是否有人有任何其他建议以及其他人如何处理 EJB 中的异常?

最佳答案

我的看法是,客户、最终用户不需要了解问题的技术细节。因此,在不同的层边界,将技术异常转换为一般的“发生了 XYZ 性质的错误”是相当合理的。

我见过的一种方案是让服务器在检测到异常时分配一个唯一的错误号。然后它将诊断信息写入其日志,包括该数字。报告给客户端的消息仅包含该号码。然后,支持台可以通过该特定错误编号将用户的问题报告关联起来。

关于java - 正确的 EJB 异常处理 - 来自客户端的 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1401108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com