Вот мой удар по этому вопросу:
Обязательно :
EJB может предоставлять некоторую внутреннюю функцию, которая предполагает / полагается на уже запущенную транзакцию вызывающей стороны, и, если она не по разным причинам, не может ее инициировать и поэтому выдает ошибку EJB. Таким образом, реальный вопрос здесь заключается в том, почему это когда-либо является требованием, и единственный сценарий, который я могу придумать, - это сценарий, в котором могут быть определенные действия, связанные с транзакцией, которые должны быть выполнены при запуске транзакции, а некоторые EJB-компоненты не оборудованы для этих действий и т.д. помечены как обязательные. Я полагаю, что вы также можете использовать этот атрибут для обеспечения согласованного и правильно упорядоченного захвата блокировки, когда невыполнение этого может привести к тупику.
Никогда :
Это заставляет ваш EJB выдавать исключение, если транзакция выполняется при вызове EJB, и опять же, реальный вопрос в том, какой сценарий потребует этого. Ссылаясь на Мастеринг EJB, третье издание , Эд Роман утверждает, что этот атрибут полезен для уменьшения ошибок кодирования на стороне клиента, предотвращая неверное предположение, что EJB будет участвовать в процедуре ACID .
Возможно, другие смогут предоставить более конкретные сценарии для этих атрибутов.