Dialoge Process
Erik Mazoyer <[email protected]> Tue, 22 Feb 2011 16:45:56 +0100
| Newsgroups | gmane.comp.java.french.general |
|---|---|
| Message-ID | <750A0A783BB5794B8938CF493365CB4C513C6A4DC9@BE-BRU-MX01.uni-learning.local> |
Bonjour à tous, Dans nos développements nous avons besoin de transformer un Flash en image sous Java. Pour cela nous avons écrit une passerelle JNI pour shooter l'animation en C++ et la récupérer en Java. Malheureusement l'ActiveX Flash n'est pas stable dans le temps et quand il plante, il plante aussi la JVM. Pour éviter cela, nous envisageons d'écrire un application C++ et de la lancer depuis Java. De ce fait, si l'application plante, la JVM n'est pas perturbée. Mais (car il y a toujours un mais) il faut mettre en place une communication entre l'application et la JVM (lancer l'application pour chaque rendu est trop consommateur de temps). Les solutions de dialogue basées sur ip sont proscrites car l'application doit pouvoir fonctionner sur tout ordinateur avec ou sans Firewall sans que l'utilisateur n'est à modifier sa configuration (souvent il n'en a pas le droit). J'avais bêtement pensé à utiliser les InpuStream et OutputStream du Process lancé par Java. Pour tester cela j'ai écrit une appli C++ qui fait un écho, elle lit en permanence sur std::cin et écrit ce qu'elle lit sur std::cout. Je l'ai testée sur l'invite de commande avec succès. Du coté Java : Process process = new ProcessBuilder(processFile.getCanonicalPath()).start(); OutputStream outputStream = process.getOutputStream(); InputStream inputStream = process.getInputStream(); Ensuite je délègue à des threads le remplissage de l'outputStream et la lecture de l'inputStream. Seulement voila, je reçois bien le message de l'appli comme quoi elle s'est lancée mais j'ai beau envoyer des caractères sur l'outputStream, je ne reçois rien sur l'inputstream. J'ai essayé la lib Shell d'adiGuba (com.developpez.adiguba.shell) sans que ça ne change quoi que ce soit. Ave- vous déjà réalisé cela ? Avez-vous des pistes de réflexions. Merci d'avoir lu jusqu'ici :) Erik