3

ステートレス EJB がプールに格納され、必要に応じてインスタンス化されることは知っています。私の質問は、EJB 依存関係がさらにある場合、たとえば次のような場合にどうなるかということです。

@Remote
@Stateless
public class Master_EJB{
     @EJB
     private EJB_A ejb_A;

     @EJB
     private EJB_B ejb_B;
}

EJB_A と EJB_B もステートレス EJB です。

最悪の場合、まったく同時に 2 つの要求がある場合、サーバーはプールから Master_EJB の 2 つのインスタンスを取得します (または、必要に応じて作成します)。

しかし、これら 2 つの呼び出しのうち、一方が EJB_A のみを必要とし、もう一方が EJB_B のみを必要とする場合、必要なインスタンスの数は 4 (2 つの Master_EJB + 1 EJB_A + 1 EJB_B) または 6 (2 Master_EJB + 2 EJB_A + 2 EJB_B) になりますか?

4

1 に答える 1

3

EJB_AとEJB_Bはステートレスですか、それともステートフルですか?

ステートレスの場合、回答は使用されているコンテナ/プールのタイプと最近の状況(リクエストの数、サーバーの負荷など)によって異なります。ステートフルおよびコンテナが2つのMaster_EJBインスタンスをインスタンス化する場合、EJB_Aの2つのインスタンスがインスタンス化され、EJB_Bの2つのインスタンスもインスタンス化されます。

コンテナ2つのMaster_EJBインスタンスを作成する可能性があることに注意してください。これは、コンテナ自体と現在の状況によって異なります(また、コンテナは1つのMaster_EJBインスタンスのみを使用してリクエストを処理することを決定する場合があります)。

于 2011-08-31T11:54:05.000 に答える