Re: Dialoge Process

Jean-Baptiste Defard <[email protected]> Tue, 22 Feb 2011 17:46:01 +0100
Newsgroups gmane.comp.java.french.general
Message-ID <[email protected]>
Salut,

Ou alors en plus moderne : AMQP pour la communication. Coté Java, je
sais qu'il y a un composant Camel. il existe une (au moins)
implémentation AMQP en C++.

seulement 1 cent (car je n'ai pas encore eu l'occasion de tester la
chose).

--

Jean-Baptiste

Le 22/02/2011 16:53, jerome moliere a écrit :

Salut erik,

moi à ta place (mais je n'y suis pas) je ferai du CORBA sur un bus
même local et cela serait plus clean architecturalement et
t'aurais pas de galères du type de celle rencontrée

My 2 cents

jerome

PS:

en plus t'as tout ce qu'il faut côté Java dans une JVM récente

Le 22 février 2011 16:45, Erik Mazoyer <[email protected] >
a écrit :

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

--

J.MOLIERE
- Mentor/J

auteur Eyrolles
smime.p7s (application/pkcs7-signature, 5.4 KB) - not displayed