1

ステートレス EJB を使用しているときに問題が発生しました。その EJB で特定の静的メソッドを使用する必要がありますが、このメソッドは非常に重要であり、静的な依存関係があります。

ご存知のように、ステートレス セッション Bean のインスタンスは要件 (1 つまたは複数) に従って作成されます。では、すべての EJB がその静的メソッドの 1 つのコピーを使用していることを確認するにはどうすればよいでしょうか。よくわかりませんが、静的メソッドを使用するすべての異なるクラスは、クラスの異なるコピーをロードしてから、静的メソッドの異なるコピーを実行すると思います。

また、サーバーが複数の JVM を必要とする場合、単一の EJB は 1 つのコピーだけが残るという保証がないため、信頼できません。シングルトン EJB の別のコピーが別の JVM に存在します。

前もって感謝します。

4

1 に答える 1

1

Static methods are one per class, even if you create thousands of instance of that class all of them will see just one copy of your static method.

Now as per Spec you should not have static methods in your EJB, you should consider moving this as part of utility if you want it static, or else make it non static.

From the Spec:

EE.5.2.3 Annotations and Injection

As described in the following sections, a field or method of certain container-managed component classes may be annotated to request that an entry from the application component’s environment be injected into the class. Any of the types of resources described in this chapter may be injected. Injection may also be requested using entries in the deployment descriptor corresponding to each of these resource types. The field or method may have any access qualifier (public, private, etc.). For all classes except application client main classes, the fields or methods must not be static.

于 2012-05-02T03:16:09.503 に答える