EJB:使用" private"渗透异常。根本的原因

时间:2013-12-22 00:49:02

标签: java-ee exception-handling ejb ejb-3.0

考虑这种情况:

  1. 远程调用无状态会话bean(来自不同的应用程序,甚至可能在不同的服务器上运行):

    public void test() throws MyPublicException {
        // ... Business logic
        try {
            someDependency.perform();
        } catch (Exception ex) {
            // "ex" may be an instance of "MyPrivateException"
            throw new MyPublicException("Exception encountered", ex);
        }
    }
    
  2. MyPublicException是bean的公共API的正式部分。它可以在调用者的类加载器中使用。

  3. MyPrivateException 不是bean的公共API的一部分。它由bean在业务逻辑处理期间最终调用的一些内部代码进行实例化和抛出。

  4. 因此,现在容器将异常传播回调用者,这是一个小问题。异常的根本原因是MyPrivateException类型,在调用者的类加载器中不可用。

    我的问题是 - 是否有关于在这种情况下该怎么做的最佳做法?我唯一能想到的就是捕获bean方法中的每个异常,并构造一个等效的异常而不用根本原因。然而,这是一个负担,因为它需要相当多的代码。

    还有其他想法吗?

0 个答案:

没有答案