В нашем проекте веб-сервис Java взаимодействует с бэкэнд-программой, написанной на C и Perl для обработки. Мы используем ProcessBuilder для выполнения внутреннего (UNIX) задания FrameworkHandler.
ProcessBuilder process;
process.Start(FrameworkHandler -a ACTION)
FrameworkHandler вызывает скрипт Perl для выполнения какого-либо действия. Сценарий Perl внутренне выполняет команду diff между двумя файлами XML и использует функцию печати для вывода ошибки:
sub print_error
{
$err_msg = shift;
print STDERR "$err_msg\n";
}
Всякий раз, когда между файлами есть разница, программа Perl зависает в функции print_error. Если мы выполняем программу Perl в оболочке UNIX, она работает без каких-либо проблем. Но если мы выполняем Perl через веб-сервис, он не возвращается после команды diff. В связи с этим веб-сервис также не возвращает ответ. Создают ли проблему символы «больше» (>) в тегах XML?
Любая помощь очень ценится.
Часть ошибки:
< 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>
Спасибо,
Мэтью Лию