我一遍又一遍地从许多开发者那里得到这个"建议".根据我的经验,我发现EJBExceptions非常适合从bean实例的角度来看"世界末日"(比如当某些东西错误以至于bean实例无法自行恢复时).如果一个实例可以恢复,我认为最好抛出一个应用程序异常.
这是我一遍又一遍地遇到的模式:
private SomeResource resource;
ejbCreate:
resource = allocateResource(...);
omMessage:
try {
...
} catch (JMSException e) {
throw new EJBException(e);
}
ejbRemove:
freeResource(resource);
恕我直言,这是一个导致资源泄漏的反模式.
编辑:具体来说,EJB规范说如果bean从业务方法抛出运行时异常(并且EJBException是运行时异常),那么bean将被丢弃,而不会在其上调用ejbRemove.
这是否是反对抛出EJBException的相关示例?应该抛出EJBException的相关案例是什么?