如何将重复调用的外部过程集成到Java Webapp中?

我正在尝试将非Java可执行文件集成到服务器端(Linux)上的Java Webapp中.

有关可执行文件的一些详细信息:
用C写.该可执行文件从stdin或文件中获取一些输入,并生成一个输出文件.该可执行文件并非设计为长时间运行的进程,即它生成输出然后消失.

尽管为可执行文件启动单个进程非常便宜,但对其执行的调用次数可能很多.这可能会导致产生太多进程,从而可能降低服务器性能.

如何围绕此exe编写一些包装程序或实用程序(使用Java),以使我可以高效地运行

>我的Java应用程序中的一个线程
>长期运行的外部流程

PS:我知道我可以使用Java中的Runtime或ProcessBuilder来启动外部进程,并且可能使它成为多线程并使用一些排队,但这不能解决反复启动进程的问题.

解决方法:

如果你:

a)可以修改源代码.

我建议您创建一个长期运行的过程并将其公开为Web服务.这样,进程将只坐在那里等待被调用.

b)有源代码/标题,但是您不能修改它.

一个好主意可能是将其集成为库,并使用JNI或JNA从Java调用它,尽管这可能很难.

C)没有源代码或无法修改它.

然后没有太多选择,您必须创建一个线程队列,然后从那里限制进程的创建.

上一篇:c#-2有关命名管道的问题


下一篇:c#-处理来自asp.net(mvc)的数千次对外部服务的调用的正确方法