На вопрос о том, как предотвратить использование аннулированных объявленных исключений, вызывающих откат при распространении на «верхний уровень», здесь еще нет ответа.
Я думаю, что для этого потребуется обертка вокруг рассматриваемого EJB, которая проглотит выброшенное исключение. (Другими словами: я думаю, что пользовательское исключение ДОЛЖНО быть сгенерировано на границе метода (и, следовательно, не отловлено и не обработано внутри метода) И распространено для получения транзакционного эффекта - а также, в свою очередь, приведет к уничтожению экземпляра EJB.)