gpt4 book ai didi

java - 为什么我的 Java Web 服务无法与我的 Perl 后端通信?

转载 作者:行者123 更新时间:2023-12-02 00:56:00 25 4
gpt4 key购买 nike

在我们的项目中,Java Webservice 与用 C 和 Perl 编写的后端程序进行通信以进行处理。我们正在使用 ProcessBuilder 来执行后端 (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 函数中挂起。如果我们在 UNIX shell 中执行 Perl 程序,它就可以正常工作,没有任何问题。但是如果我们通过Web服务执行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>
<小时/>

谢谢,马修·李居

最佳答案

The API docs说:

“由于某些原生平台只为标准输入输出流提供有限的缓冲区大小,未能及时写入子进程的输入流或读取子进程的输出流可能会导致子进程阻塞,甚至死锁。”

你遵守了吗?

关于java - 为什么我的 Java Web 服务无法与我的 Perl 后端通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/349103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com