Question

J'ai une situation où j'ai besoin d'envoyer des commandes à une application Java en cours d'exécution. J'utilise maintenant TCP / IP Socket pour envoyer des commandes à l'application à l'aide d'un élément du menu contextuel d'Internet Explorer. Mais dès que l'application démarre, les analyseurs de virus se plaignent que l'application a commencé à écouter, bien que je n'écoute que les connexions locales. Je pense que cela peut être déroutant pour les utilisateurs. Je cherche d'autres moyens de communiquer sans faire chier les scanners?

Était-ce utile?

La solution

Pour cela, vous avez intérêt à utiliser une file d'attente FIFO basée sur des fichiers. Ou en utilisant Java Native Access / Java Native Interface pour écrire dans un NamedPipe ou une mémoire partagée. Si vous choisissez la route JNA / JNI, vous pouvez créer un Événement nommé .

Mais il n’ya probablement aucun moyen de faire ce que vous voulez, avec une efficacité maximale, sans passer par la route JNA / JNI.

Autres conseils

Vous pouvez utiliser extensions de gestion Java (JMX). pour exposer les méthodes d'un processus en cours via une interface Web simple.

Les sockets sont à peu près la manière traditionnelle de faire IPC, mais si vous voulez vraiment les éviter, vous pourrez pouvoir créer une solution de contournement à l'aide de la méthode locale. système de fichiers. Vous ne voudriez pas utiliser les lectures / écritures de fichiers standard, car vous voudriez probablement implémenter efficacement une file d'attente dans le système de fichiers.

Si je mettais en œuvre IPC via le système de fichiers, j'utiliserais probablement SQLite ( qui peut être threadsafe une fois compilé) et avoir une table pour chaque écouteur. J'utiliserais probablement un tableau à une seule colonne pour insérer le message, et l'auditeur retirerait simplement la ligne avec le plus bas rowid , puis supprimez cette ligne.

Mais mon approche n'est pas du tout spécifique à Java. Il pourrait donc y avoir de meilleurs moyens de le faire en utilisant Java (comme la réponse de @ darthcoder).

Beaucoup de gens utilisent quelque chose comme JMS dans ce scénario.

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