J'ai 2 applications Java distinctes fonctionnant à la fois. (Deux javaw.exe distincts) Je dois partager un objet entre eux pendant qu'ils courent. p>
Quel est le moyen le plus simple d'y parvenir sans avoir de stockage permanent? p>
6 Réponses :
Peut-être oracle cohérence ? Cela fonctionne comme une carte mémoire partagée entre les applications. P>
Vous pouvez utiliser TCP P>
Exemple: http://www.java-samples.com/showdutoriel .php? TutorialID = 1167 p>
Bien sûr que ce ne sera pas. Ensuite, il devrait y avoir quelque chose comme la mémoire partagée. Un exemple de mémoire partagée: Ça UnderializableOne.blogspot.com/2006 / 10 / ...
Si vous ne pouvez pas stocker l'objet de manière permanente, vous devez le transférer d'une manière ou d'une autre. Cela peut être fait via un réseau ou une sorte de mémoire partagée. P>
Pour la première approche (réseau), utilisez la sérialisation (java.io.sérialisable) et transférez l'objet sur la prise. Cela nécessitera la rédaction d'auditeurs de socket. P>
Deuxième approche nécessitera l'utilisation et la configuration d'une bibliothèque tierce partie (E.G. EHCache ). P>
Les objets et leurs variables d'instance peuvent être partagés entre des threads dans un programme Java, qui est une tâche assez simple.
Si vous avez besoin de partager des objets (instance de celle-ci) entre deux programmes, avec le stockage de données, le choix suivant utiliserait Communication de socket RMI ou service de messagerie Java. P>
Vous devez décider si vous préférez l'état partagé et mis à jour, ou simplement envoyer un objet de messagerie unique. P>
Dans le premier cas, vous devez partager une "référence à distance" à un objet. RMI est un bon approche. P>
Dans le second cas, il vous suffit de sérialiser l'objet que vous souhaitez partager et de l'envoyer. Vous pouvez l'envoyer sérialisé (converti en byes) sur une prise comme Ankit dit ou même vous pouvez utiliser: P>
rmi :) L'expéditeur se connecte à un récepteur enregistré RMI, invoque une méthode avec l'objet Mesasge sous forme de param et oublie l'objet RMI P> Li>
Service de messagerie Java (JMS), peut-être une overkill ... p> li>
Une autre chose créative mais simple ... p> li> ul>
Je pense que Hazelcast fonctionne bien pour ce type de situation. Il ne nécessite pratiquement aucune configuration (plus que cela, vous devez ajouter les dépendances aux bocaux hazelcast). L'exemple de code suivant montre comment configurer une carte partagée code>.
// Code in process 1 Config cfg = new Config(); HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg); Map<Integer, String> sharedData = instance.getMap("shared"); sharedData.put(1, "This is shared data"); // Code in process 2 Config cfg = new Config(); HazelcastInstance instance = Hazelcast.newHazelcastInstance(cfg); Map<Integer, String> sharedData = instance.getMap("shared"); String theSharedString = sharedData.get(1);
Hazelcast est assez facile à configurer. Cependant, faites attention aux limitations sous-jacentes (comme des clusters plus de 150 membres, ou une cohérence des données)
Voir communication entre deux applications de bureau Java distinctes
Ceci est très utile. Merci :)