0

実行される呼び出しに応じて、異なる EJB を注入する必要がある Web サービスがあります。@EJB アノテーションを使用して、Web サービスで使用できるすべての EJB を指定できます。

例:

@EJB
private EJBType1 ejb1;
@EJB
private EJBType1 ejb1;

@WebMethod
public String readDataFromType1() {
   ejb1.call1();
}

@WebMethod
public String readDataFromType2() {
   ejb2.call2();
}

私が知りたいのは、いつ EJB が注入されるかということです。EJB の使用時のみ、またはいずれかの Web サービス呼び出しが実行されたときに両方が注入されますか? 多数の EJB を注入すると、パフォーマンスに悪影響が及ぶのではないかと心配しています。

4

1 に答える 1

0

Beanを使用する準備ができる前に、EJBが注入されます。したがって、どちらのメソッドも呼び出されなくても、両方のEJBType1が注入されます。しかし、心配する理由はありますか?場合によります。

EJBType1がリモートインターフェースを備えたEJBである場合、そのようなBeanへの参照を取得するのはコストがかかる可能性があります(特にこのBeanがステートフルコンポーネントである場合)。

EJBType1がローカルインターフェイスEJBである場合、そのようなBeanのインジェクションに関連するオーバーヘッドは、特にアプリケーションサーバーによってプールされる可能性のあるステートレスコンポーネントの場合、特に重要ではありません。

于 2012-05-07T21:23:23.360 に答える