如何从NodeJs调用Java程序

我有一个通常从命令行启动的Java程序。从命令行启动后,Java程序将一直运行直到被按下Ctrl +

C退出或杀死另一个脚本中的命令为止。Java程序向控制台输出错误消息(如果有)。

现在,我想开发基于Express的NodeJs

Web应用程序。当用户单击链接(运行)时,单击处理程序将调用Ajax请求,这将导致后端NodeJs脚本运行该Java程序(如果尚未运行)。另一个链接(停止)将使Ajax请求停止该Java程序。

如何做到这一点?用示例代码回答将是最有用的。

还有一个要求:如果此NodeJs Web应用程序终止,则由它启动的Java程序将继续运行,即它不依赖于NodeJs Web应用程序。

回答:

您可以启动子进程,并在不需要时发送终止信号。

var spawn = require('child_process').spawn;

var child = spawn('java', ['params1', 'param2']);

要终止应用程序或模拟CTRL+ C,请发送信号:

// control + c is an interrupt signal

child.kill('SIGINT');

// or send from the main process

process.kill(child.pid, 'SIGINT');

如果要以分离的方式运行应用程序,则可能应该将PID写入某处。要运行分离的应用程序,请按以下方式运行它:

var fs = require('fs');

var out = fs.openSync('./out.log', 'a');

var err = fs.openSync('./out.log', 'a');

var child = spawn('java', [], {

detached: true,

stdio: [ 'ignore', out, err ]

});

child.unref();

这产生了一个子进程,其I / O流与父进程没有关联。

以上是 如何从NodeJs调用Java程序 的全部内容, 来源链接: utcz.com/qa/432565.html

回到顶部