まったく影響しません。クラスはクラス、オブジェクトはオブジェクトです。それらは管理されておらず、干渉されておらず、何も起こりません。彼らは決して特別ではありません。
静的シングルトンは静的シングルトンであり、Java は Java です。
知っておく必要があるのは、コンテナーのクラスローダー レイアウトと、デプロイされたアプリケーションおよびリソースとの関係だけです。(たとえば、あるアプリのクラスは別のアプリのクラスを見ることができません。) ほとんどの場合、これはあまり重要ではありません。物事がより複雑になるにつれて、そうなる場合もあります。
しかし、ほとんどの場合、それはただの Java です。
補遺:
これを確認するより良い方法は、単純にクラスをローカリティのブロックにグループ化することです。
EJB を使用する単純な Web アプリケーションを考えてみましょう。
Web アプリケーションは WAR アーティファクトにデプロイされ、EJB は個別にコンテナー内の個別の EJB としてデプロイするか、より可能性が高いのは EAR 内にデプロイできます。アプリケーションを EAR にパッケージ化する場合、WAR も EAR 内にバンドルする可能性があります。したがって、最終的に EAR には WAR と EJB が含まれます。
開発中、この場合、クラスは 3 つのカテゴリのいずれかに属します。
EJB のみに関連するクラス (セッション Bean など)。
WAR のみに関連するクラス (サーブレット クラスなど)。
両方に関連するクラス (おそらくデータベース エンティティ)。
したがって、それらをパッケージ化する簡単な方法は、3 つの jar ファイルにまとめることです。WAR 用の jar ファイル (実際、これは WEB-INF/classes 内のクラスを含む WAR です)、EJB 用の jar ファイル、および 3 番目のタイプの jar ファイルです。これをライブラリと呼びます。
ビルドの依存関係に関しては、WAR ビルドは lib に依存し、EJB ビルドは lib に依存します。しかし、WAR も EJB も相互に依存しません。これらは直接には何も共有せず、3 つ目のライブラリ jar を介して間接的にのみ共有するためです。lib jar は、WAR にも EJB にも依存しないため、スタンドアロンです。EJB セッション Bean インターフェイス クラスはライブラリ jar に入ることに注意してください (両方の層がそれらに依存しているため)。
耳には、lib jar、WAR、および EJB jar を META-INF dir および application.xml ファイルと一緒にバンドルするだけです。WAR には独自の構造があり、WEB-INF とすべて、EJB jar には META-INF と ejb-jar.xml があります。ただし、lib.jar は WEB-INF/lib ディレクトリになく、EAR バンドルにあるため、コンテナが担当するクラス ローダーのチカネリを使用して、EJB と WAR の両方で共有されることに注意してください。
これは注意することが重要です。たとえば、lib jar に単純な静的シングルトンがある場合、WAR と EJB の両方がそのシングルトンを共有します。これらはすべて同じクラス ローダーの一部であるためです。そのシングルトンを使用するには、通常の Java だけです。特別なことは何もありません。
EJB と WAR が別々にデプロイされた場合、それぞれに独自の lib.jar のコピーが必要になります。Singleton の場合、各モジュールには独自のクラス ローダーがあるため、それらは共有しません。
そのため、他の方法でいくつかの実際の書き込みが必要でない限り、すべてを EAR にバンドルして、EJB 層と WAR 層の両方を単一の統合アプリケーションとして扱う方が簡単です。
補遺2:
Java EE 開発でクラスを使用することについてはあまり話題になりません。それは、他の Java プログラムと同じようにクラスを使用するだけだからです。あなたはここでこれを考えすぎています。
3 つの jar イディオム: war、ejb、lib は、3 つの懸念事項を分離し、依存関係を制限するため、私が長年使用してきたものです。クライアント -> ライブラリ -> EJB。また、クライアントは通常、lib jar と Java のみを必要とするため、ビルドが簡素化されます。Netbeans IDE では、これを管理するのは簡単です。ちょっとした作業で、他の IDE や ant/maven でも簡単です。大きな負担ではありませんが、3つの部分を比較的きれいに保ちます.
依存関係と Jar の管理は、大規模な Java プロジェクトにとって悪夢であり、デプロイ可能なさまざまなアーティファクトを扱う EJB ではなおさらです。私の本では、それを軽減するのに役立つものはすべて勝利であり、真実は、クリーンでスタンドアロンの lib jar が非常に役立ちます。特に、その lib を他のコードと統合して使用する必要がある場合に役立ちます。たとえば、後でリモート EJB または Web サービスを使用して外部 GUI クライアントを作成する場合、lib jar はクライアントが持つ唯一の依存関係です。この jar の利点は、この種のライブラリをセットアップするのに必要なわずかな手間をはるかに上回ります。
最後に、lib jar は、アプリケーションで使用したい他の jar と同様の単なる jar です (ロギングやその他の一般的なサードパーティの jar など)。