Dans notre projet, le webservice Java communique avec le programme backend écrit en C et Perl. Nous utilisons le ProcessBuild pour exécuter un travail backend (UNIX) FrameworkHandler.Pourquoi mon webservice Java ne peut-il pas parler à mon serveur Perl?
ProcessBuilder process;
process.Start(FrameworkHandler -a ACTION)
FrameworkHandler invoque un script Perl pour effectuer une action. Le script Perl interne une commande diff entre deux fichiers XML et utilise la fonction d'impression pour imprimer l'erreur:
sub print_error
{
$err_msg = shift;
print STDERR "$err_msg\n";
}
Chaque fois qu'il ya une différence entre les fichiers du programme Perl se bloque dans la fonction print_error. Si nous exécutons le programme Perl dans le shell UNIX, cela fonctionne sans aucun problème. Mais si nous exécutons Perl via le webservice, il ne revient pas après la commande diff. Pour cette raison, le service Web ne renvoie pas non plus la réponse. Si les symboles supérieurs à (>) dans les balises XML créent un problème?
Toute aide est très appréciée.
Partie d'erreur:
< diff -udr --new-file --label=postProcess1 --label=postProcess2 postProcess1 postProcess2
< --- postProcess1
< +++ postProcess2
< @@ -124,6 +124,36 @@
< <LOCATION></LOCATION>
< <ADDRESS_PART1>Test Address ^D</ADDRESS_PART1 >
< </address_details>
< + <address_details>
< + <CITY></CITY>
< + <STATE>12</STATE>
Merci, Mathew Liju
Ceci est un doublon. Des réponses encore meilleures peuvent être trouvées à l'autre incarnation de cette question: http://stackoverflow.com/questions/355311/why-cant-my-java-program-read-perls-stderr – innaM