1

これは複雑に聞こえるかもしれませんが、とにかく質問します:

クラスXを使用するサービスAを実行しています。新しいクラスに加えて、クラスAを使用する別のサービスBを開始したいと考えています。

サービスAは既に実行されています。Service Bのホットデプロイを行います。

ここに本当の問題があります。サービスBはクラスXの同じインスタンスを使用するか、別のインスタンスを使用するかです。ここでシングルトンクラスはどのように役立ちますか?

4

2 に答える 2

2

各サービスは独自のオペレーティング システム (OS) プロセス空間で実行され、各プロセス空間には独自のクラス インスタンスがあります。「シングルトン」クラスは通常、クラスの静的フィールドを使用してコーディングされます。これは、コードが実行されていたプロセス空間に対してローカルであるため、シングルトンを共有しません。それぞれが独自のインスタンスを取得します。

ただし、外部の共有同期プロセスを使用して、実行しようとしていることを実行できます (たとえば、.Net Remoting (または WCF) と同等の Java を介してシングルトンを公開する - 使用するようにコード化されたネットワークに公開されたエンドポイント)。シングルトン、および両方のサービスを「接続」して、リモートでアクセス可能なシングルトンを使用します)

于 2009-09-29T20:10:47.453 に答える
0

私は Java Web サービスがどのように実行されるかについて詳しく知りませんが、両方が同じ VM で実行されている場合、VM 内のすべてのアプリケーションでクラスが共有され、静的フィールドが共有されると思います。Singleton パターンは通常、単一のインスタンスを静的メンバーにアタッチすることによって実現されるため、Singleton は共有されます。

これは以下に基づいています: The Clean Code Talks - "Global State and Singletons"

2 つの単純な Web サービスを作成することで、これをテストできるはずです。フラグを設定するなど、シングルトンに対して何かを行うものと、それをチェックするものです。

于 2009-09-29T20:42:56.503 に答える