EJB 2.1 SLSB として実装された使用頻度の高いサービス オブジェクトを想像してみてください。これは、まったく状態を持たないため、たまたまそれ自体がスレッド セーフになっています。すべてのパブリック メソッドは (CMT を介して) トランザクションに対応しており、ほとんどは単純にトランザクションを必要としますが、新しいトランザクションを必要とするものもあります。
この SLSB を本物のシングルトン POJO に変換すると (DI フレームワークなどを使用して)、アプリケーションのスケーラビリティにどのような影響がありますか? サービスが SLSB の場合、EJB コンテナーはインスタンスのプールを管理し、そこから各クライアントが独自のコピーを取得するため、それをシングルトン POJO にすると、その単一インスタンスに何らかの競合が発生するのではないかと考えています。
FWIW、このサービスのメソッドはどれもsynchronized
.
明確化: SLSB を POJO に変換する私の動機は、オブジェクトのライフサイクル (真のシングルトンとコンテナー管理) とコード自体 (1 つのインターフェースと 1 つの注釈付き POJO に対して、3 つのインターフェース、1 つの Bean クラス、および束) の両方の単純さです。 XML の ejb-jar.xml 内)。
また、FWIW、問題のサービスは、JBoss 3.x で実行されているコロケーションされた Web アプリの 1 つのコンポーネントです。