Si vous exécutez 2 fichiers jar séparément, alors chaque fichier jar exécute sa propre instance JVM et rien n'est partagé entre eux. Il s'agit de deux processus distincts. Arrêt complet.
Si vous souhaitez communiquer entre eux, voici des alternatives : Cela dépend du type de données que vous souhaitez transférer.
Si ce n'est que des cordes, alors : si number of process = 2
et si vous en êtes sûr, alors stdin
&8 stdout
est la meilleure façon d'avancer. Un processus peut commencer à exécuter un autre Jar
en créant un fichier Process
en utilisant ProcessBuilder
et ensuite utiliser les flux pour communiquer. L'autre processus peut simplement faire System.out
pour transférer le message. Ceci est préférable à Socket, car vous n'avez pas à gérer la fermeture gracieuse de la socket, etc. (En cas d'échec et si le port n'est pas délié avec succès, cela peut être un gros problème).
si number of jar files > 2
(c'est-à-dire le nombre total de processus) et less than
dites 10
vous pouvez probablement utiliser des sockets et communiquer par le biais de ces derniers. Cela devrait bien fonctionner, bien qu'un effort supplémentaire soit nécessaire pour gérer les sockets de manière élégante.
si number of process
es Large
entonces JMS
devrait être utilisé. Il fait beaucoup de choses que vous n'avez pas besoin de gérer. C'est une tâche trop importante si le nombre de processus est moindre.
Dans votre cas, la procédure est donc la meilleure solution. Si les données que vous souhaitez transférer, peuvent même être des Objets. RMI
peut être utilisé si le nombre de processus est inférieur. S'il y en a plus, il faut utiliser JMS
encore.
Edit : Maintenant, pour tout ce qui précède, il y a beaucoup de travail sale impliqué. Pour changer, si vous cherchez quelque chose de nouveau et d'excitant, je vous conseille akka. C'est un modèle basé sur les acteurs qui communiquent entre eux en utilisant des messages. La beauté de la chose est que les acteurs peuvent être sur la même JVM ou sur une autre (très peu de configuration) et akka s'occupe du reste pour vous. Je n'ai pas vu de manière plus propre de faire cela :)