通过 NodeJS 运行 Java 函数

问题描述 投票:0回答:3

我有一个表单数据发送字符串和整数到我的 Express 服务器,我需要使用我的 Java 后端进行计算并响应前端,我可以直接从 Express 服务器执行此操作还是需要涉及其他步骤?

javascript java node.js express
3个回答
1
投票

您可以从nodejs执行java命令。您可以通过expressjs路由器运行exec命令。对于最好的情况,我将使用 Java 创建另一个 API 并向该端点(微服务)发出请求。但如果您不想这样做,您可以尝试此代码示例;

const express = require('express')
const app = express()
const port = 3000
const exec = require('child_process').exec
app.get('/', (req, res) => {
  const child = exec('/usr/bin/java ~/example.jar', => (error, stdout, stderr) {
    if (err) {
        console.error(err);
        res.json({error: err, status: 500, errorOutput: stderr})
        return
    }
    // it is important to have json structure in your output or you need to create a logic which parse the output
    res.json(stdout)
  })
})

app.listen(port, () => console.log(`Example app listening on port ${port}!`)) 

1
投票

您可以使用 Node.js 'exec' 来调用外部 Java 程序,如下所示:

Javascript程序

const exec = require('child_process').exec;

// Number 7 is a command line argument to pass to the Java program
exec('java MyJavaApplication 7', function callback(error, stdout, stderr){
    console.log(stdout);
});

Java程序

public class MyJavaApplication {
    public static void main(String[] args) {
        int input = Integer.parseInt(args[0]);
        int output = calculate(input);
        System.out.println(Integer.toString(output));
    }

    private static int calculate(int input) {
        // Do some complex calculation
        return input * input;
    }
}

在 Node.js 上,您可以捕获 Java 程序写入标准输出的任何内容。 根据输入的复杂程度,您可能希望将文件名作为参数传递给 Java 程序。例如,该文件可以包含 JSON 格式的输入内容。


0
投票

您可以使用名为“bridgeService”的库。这将 java 方法公开为 REST 对象。您可以将其部署在本地或服务器上。

对于像“a.b.c.d.E.f(String argument)”这样的方法

有效负载将类似于:

{
  "callContent": {
    "<ID>": {
      "class": "a.b.c.d.E",
      "method": "f",
      "args": [
        "argument"
      ]
    }
  }
}

有关bridgeService的更多信息可以参考https://github.com/adobe/bridgeService

© www.soinside.com 2019 - 2024. All rights reserved.