Я продолжаю получать это "предложение" от многих разработчиков-разработчиков снова и снова. По моему опыту, я обнаружил, что EJBExceptions хорошо подходят для "конца света" с точки зрения экземпляра bean (например, когда что-то не так, что экземпляр bean не может восстановить сам по себе). Если экземпляр может восстановиться, я думаю, что лучше исключить исключение приложения.
Вот пример, который я встречаю снова и снова:
private SomeResource resource; ejbCreate: resource = allocateResource(...); omMessage: try { ... } catch (JMSException e) { throw new EJBException(e); } ejbRemove: freeResource(resource);
IMHO - это антипаттерн, который вызывает утечку ресурсов.
EDIT. В частности, спецификация EJB говорит, что если bean выбрасывает исключение среды выполнения (и EJBException - исключение во время выполнения) из бизнес-метода, то bean отбрасывается без вызова ejbRemove на нем.
Является ли это подходящим примером для исключения EJBException? Каковы соответствующие случаи, когда EJBException следует бросить?