Est-il possible de créer une classe Singleton universelle, qui est, à un moment donné, une seule instance partagée par plusieurs processus Java?Comment créer une classe Singleton inter-processus en Java
Répondre
Plusieurs processus Java ne partagent pas la même machine virtuelle. Vous obtiendrez ainsi une instance JVM hébergeant le singleton, puis une instance JVM par processus accédant au singleton à l'aide de Remote Method Invocation comme suggéré par @Little Tables.
Quoi qu'il en soit considérer When is a Singleton not a Singleton:
singletons multiples dans deux ou plusieurs machines virtuelles
Lorsque des copies de la course de classe Singleton dans plusieurs machines virtuelles, une instance est créée pour chaque machine. Que chaque VM puisse contenir son propre Singleton peut sembler évident mais, dans les systèmes distribués tels que ceux utilisant les EJB, Jini et RMI, ce n'est pas si simple. Puisque les couches intermédiaires peuvent masquer les technologies distribuées, il peut être difficile de savoir où un objet est réellement instancié. Par exemple, seul le conteneur EJB décide comment et quand créer des objets EJB ou recycler ceux qui existent déjà. L'EJB peut exister dans une VM différente du code qui l'appelle. De plus, un même EJB peut être instancié simultanément sur plusieurs machines virtuelles. Pour un bean session sans état, plusieurs appels à ce qui apparaît, à votre code, pour constituer une instance peuvent en fait être des appels à des instances différentes sur des machines virtuelles différentes. Même une entité EJB peut être sauvegardée via un mécanisme de persistance entre les appels, de sorte que vous n'avez aucune idée de l'instance qui répond aux appels de votre méthode. (La clé primaire qui fait partie de la spécification de bean entité est nécessaire précisément parce que l'identité référentielle est inutile pour identifier le bean.)
La capacité des conteneurs EJB à diffuser l'identité d'une seule instance EJB sur plusieurs machines virtuelles confusion si vous essayez d'écrire un Singleton dans le contexte d'un EJB. Les champs d'instance du Singleton ne seront pas globalement uniques. Étant donné que plusieurs machines virtuelles sont impliquées pour ce qui semble être le même objet, plusieurs objets Singleton peuvent être créés.
Les systèmes basés sur des technologies distribuées telles que EJB, RMI et Jini doivent éviter les singletons qui conservent leur état. Les singletons qui ne tiennent pas d'état mais contrôlent simplement l'accès aux ressources ne sont pas non plus appropriés pour les EJB, puisque la gestion des ressources est le rôle du conteneur EJB. Cependant, dans d'autres systèmes distribués, les objets Singleton qui contrôlent les ressources peuvent être utilisés en sachant qu'ils ne sont pas uniques dans le système distribué, seulement dans la machine virtuelle particulière.
Oui, mais pas sans installations externes. Le moyen le plus simple est d'utiliser RMI. Les autres options comprennent CORBA ou Web Services - Il suffit de google up.
- 1. Extension une classe singleton
- 2. Comment créer une classe en utilisant le motif Singleton Design dans Ruby?
- 3. singleton en classe abstraite php
- 4. comment créer une classe dynamique à l'exécution en Java
- 5. Comment créer d'autres classes à partir d'une classe singleton?
- 6. Comment puis-je implémenter une classe singleton en Perl?
- 7. Une façon plus simple et plus efficace de créer une classe mysql singleton db en php?
- 8. Comment puis-je créer une instance de mon singleton const?
- 9. Comment créer une classe Perl?
- 10. Singleton dans la classe Flex
- 11. C++ - Classe singleton
- 12. Jython: Accès à la classe Java singleton (statique)
- 13. Comment créer une séquence Fibonacci en Java
- 14. Comment créer une sous-classe en C#?
- 15. Comment créer une classe en Javascript?
- 16. Comment créer une classe OOP en Javascript
- 17. Comment créer une classe Python en C?
- 18. Comment créer une applet Scala dont la classe Applet est un singleton?
- 19. Comment "requérir" une classe voisine en Java?
- 20. Comment instancier une classe Socket en Java?
- 21. Classe Singleton dans l'objectif c
- 22. Comment créer une classe singleton avec le serveur Python Flup fastcgi?
- 23. Comment créer une classe singleton PHP pour gérer les variables de demande?
- 24. Comment ajouter des méthodes de classe pratique pour une classe Singleton en rubis
- 25. Comment créer une applet Java?
- 26. Création d'une nouvelle classe non-singleton basée sur une classe singleton
- 27. Comment créer tableau multidimensionnel d'objets de classe interne en java
- 28. Créer une classe en PHP
- 29. singleton class in java API
- 30. Comment puis-je tester une classe Singleton avec DUnit?
Un par connexion univers/serveur/utilisateur? –
Ou multivers? Mais ceux-ci sont difficiles - les trous blancs continuent de crever de nouvelles instances quand vous vous y attendez le moins. – mdma
Ceci n'est pas un doublon de la question indiquée. L'autre question fait référence à une application dans son ensemble. Cette question concerne spécifiquement le modèle de Singleton à travers les limites du processus. – howettl