为什么我的Java Web服务不能与我的Perl后端通信?

时间:2008-12-08 10:31:12

标签: java perl web-services

在我们的项目中,Java Web服务与用C和Perl编写的后端程序进行通信以进行处理。我们正在使用ProcessBuilderto执行后端(UNIX)作业FrameworkHandler。

ProcessBuilder process;
process.Start(FrameworkHandler -a ACTION)

FrameworkHandler调用Perl脚本来执行某些操作。 Perl脚本在内部在两个XML文件之间执行diff命令,并使用print函数来打印错误:

sub print_error
{
    $err_msg = shift;
    print STDERR "$err_msg\n";
}

每当Perl程序在print_error函数中挂起文件之间存在差异时。如果我们在U​​NIX shell中执行Perl程序,它可以正常工作。但是如果我们通过webservice执行Perl,它就不会在diff命令之后返回。因此,Web服务也没有返回响应。 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>

谢谢, Mathew Liju

1 个答案:

答案 0 :(得分:3)

The API docs说:

“由于某些本机平台仅为标准输入和输出流提供有限的缓冲区大小,因此无法及时写入输入流或读取子进程的输出流可能导致子进程阻塞,甚至死锁。”

你遵守了吗?