ce qui est une classe singleton? Peut-il me aider à seule instance en cours d'exécution d'une classe pour deux services connexes?

StackOverflow https://stackoverflow.com/questions/1494642

Question

Cela peut paraître complexe, mais je vais quand même demander:

Je suis en cours d'exécution d'un service qui utilise la classe X . Je veux commencer un autre service B qui utilise des classes en plus de nouvelles classes.

Service est déjà en cours d'exécution. Je fais un déploiement à chaud de service B .

Voici la vraie question - Est-ce service B utiliser la même instance de la classe X ou une instance distincte. Comment peut-singleton classe me aider?

Était-ce utile?

La solution

Chaque service se déroulera dans son propre système d'exploitation (OS) espace de traitement, et chaque espace de traitement a ses propres instances de classe. Une classe « singleton » est normalement codé en utilisant des champs statiques dans une classe, qui serait locale à l'espace de processus, le code a été en cours d'exécution, donc non, ils ne partagera pas singletons. Chacun obtenir son propre exemple.

Vous pouvez faire ce que vous essayez de faire, cependant, en utilisant un processus de synchronisation partagée externe (par exemple, l'exposition d'un singleton sur quel que soit le equivilent java est de .Net Remoting (ou WCF) - un réseau point final exposé qui est codé pour utiliser un Singleton, et ont tous deux vos services « se connecter à » et l'utiliser à distance accessible Singleton)

Autres conseils

Je ne suis pas au courant des détails de la façon dont les services Web Java sont exécutés, mais s'ils sont tous deux en cours d'exécution dans la même machine virtuelle alors je pense que les classes seraient partagées entre toutes les applications dans les domaines VM et statiques seraient donc partagées . Étant donné que le modèle Singleton est habituellement accompli en attachant une seule instance à un membre statique, le Singleton serait partagé.

basé sur: Le code propre pourparlers - "État mondial et singletons"

Vous devriez être en mesure de le tester en écrivant deux simples services Web. Celui qui fait quelque chose au singleton, comme définir un indicateur, et un autre qui vérifie pour elle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top