0

ステートフル セッション Bean (EJB 2.1) を Spring Bean に移行したいと考えています。ステートフル Bean と Spring Bean の両方が、Websphere Transaction Manager を使用して Websphere Application Server で実行されます (WebsphereUowTransactionManagerインターフェイスにより、Spring はそれにアクセスできます)。

古いステートフル セッション BeanSessionSynchronizationは、コールバック メソッド (具体的にはコールバック) を利用するためのインターフェイスを実装しますafterCompletion

私の知る限り、これはステートフル Bean をエミュレートし、 Spring が提供するTransansactionSynchronizationインターフェースを実装するため、Bean のプロトタイプ スコープを使用してみました。

後で理解したように、これらのコールバックを呼び出すことはできません。「他のスコープとは対照的に、Spring はプロトタイプ Bean の完全なライフサイクルを管理しません。コンテナはプロトタイプ オブジェクトをインスタンス化し、構成し、その他の方法でアセンブルし、それをクライアント、そのプロトタイプインスタンスのそれ以上の記録なし" http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-scopes-prototype

セッション スコープは解決策になる可能性がありますが、セッション Bean は、JMS キューからのメッセージを消費するメッセージ駆動型 Pojo から呼び出されます。

編集: 古いセッション Bean は、キューなどへのさまざまな書き込みを実装する純粋な Java クラスの「ラッパー」にすぎません。したがって、既存のクラスを取得して、そこから Bean を作成し、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
4

0 に答える 0