Spring Stateful Bean эквивалент - методы обратного вызова синхронизации

Я хочу перенести сессионный компонент с состоянием (EJB 2.1) в компонент Spring. И Stateful Bean, и Spring Bean должны работать на сервере приложений Websphere с помощью Websphere Transaction Manager (WebsphereUowTransactionManager интерфейс позволяет Spring получить к нему доступ).

Старый Stateful Session Bean реализует SessionSynchronization интерфейс для использования методов обратного вызова (в частности, afterCompletion Перезвоните).

Я попытался использовать область действия прототипа для моего bean-компонента, поскольку, насколько мне известно, он эмулирует bean-компонент Stateful и реализует интерфейс TransansactionSynchronization, предлагаемый Spring.

Как я позже понял, эти обратные вызовы не могут быть вызваны, потому что "В отличие от других областей, Spring не управляет полным жизненным циклом компонента-прототипа: контейнер создает, настраивает и иным образом собирает объект-прототип и передает его клиент, без дальнейшей записи этого экземпляра прототипа " http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html

Решением может быть область действия сеанса, но компонент Session вызывается из управляемого сообщениями Pojo, которое потребляет сообщения из очереди JMS.

РЕДАКТИРОВАТЬ: старый сессионный компонент является лишь "оберткой" для чистого Java-класса, который реализует различную запись в очереди и т. Д. Таким образом, он берет существующий класс и делает из него компонент, реализуя SessionSynchronization.

public class XXXMessageSenderBean extends MessageSenderBean implements javax.ejb.SessionBean, SessionSynchronization { }

Моя идея состояла в том, чтобы взять тот же класс Java и создать Spring Bean (классы интерфейса и реализации):

public interface XXXMessageSenderPojo extends TransactionSynchronization

public class XXXMessageSenderPojoImpl extends MessageSenderBean implements XXXMessageSenderPojo

0 ответов

Другие вопросы по тегам