javascript - 在 Microsoft Azure 上使用 Node js 运行 jar 文件

标签 javascript java node.js azure

我制作了一个 Node js Web 应用程序来生成报告。我的想法是使用 .jasper 文件(jasper 报告)来生成这些报告。我已经尝试了一堆 Node js 库来执行此操作,但似乎没有任何效果。最后我继续制作一个 .jar 文件(java)来解决这个问题。流程如下:

  1. Node js 获取用户请求
  2. Node js 使用 child_process 运行 .jar 文件。它运行类似“java -jar MyApp.jar arg1 arg2 arg3”
  3. .jar 文件生成 pdf 并将其保存到文件夹
  4. .jar文件返回新生成的pdf文件的路径
  5. Node js获取路径并将pdf文件返回给用户

它在我的电脑上完美运行。然后我将其上传到 Microsoft Azure。似乎运行 .jar 文件步骤失败了,因为没有创建 pdf 文件。谁能帮助我或建议更好的方法来做到这一点?

最佳答案

如果您将 NodeJS Web 应用程序部署到 MS Azure WebApps 中,则该过程的步骤 2 无法生成用于运行 jar 可运行文件的子进程,因为 Java 运行时环境不包含您当前使用 NodeJS 的 Azure WebApp。

建议使用三种方法来执行此操作:

  1. 使用Azure VM安装NodeJS和Java,并像在本地计算机上一样在VM上部署您的应用程序。这个方法很简单。

  2. 我搜索了一个名为jsreport的开源报告软件。它可以安装在 MS Azure VM 或云服务上。您可以引用下载页面Run jar file with node js on Microsoft Azure安装它。还有 NodeJS 的 jsreport sdk http://jsreport.net/learn/nodejs 。如果你想在Azure云服务上使用jsreport,你需要知道如何在Azure云服务上构建NodeJS App https://azure.microsoft.com/en-us/documentation/articles/cloud-services-nodejs-develop-deploy-express-app/ .

  3. 改变你的流程。 NodeJS 获取用户的请求,并将其以指定的文件名和路径发送到 ServiceBus;修改为Azure WebJob的jar可运行文件从ServiceBus读取请求并生成具有给定文件名的pdf并将其保存到Azure Blob存储上的给定文件路径; NodeJS直接从Blob存储返回pdf文件给用户。

Azure WebJob & Service Bus 可以引用https://azure.microsoft.com/en-us/documentation/articles/web-sites-create-web-jobs/https://azure.microsoft.com/en-us/documentation/articles/service-bus-nodejs-how-to-use-queues/ .

关于javascript - 在 Microsoft Azure 上使用 Node js 运行 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33744055/

相关文章:

javascript - 使用 mongodb/mongoose 有条件地将 5-20k 文档的输入批处理处理为包含多达一百万个文档的集合的有效方法是什么?

javascript - Chart.js 仅显示最后一个数据值

javascript - 使用 Google Cloud Functions Node.JS 等待多个异步函数的正确方法

java - Spring boot Controller 无法命中错误 404

javascript - Node.js 播放声音 : TypeError: Cannot read property 'play' of undefined

javascript - 更新/删除 Node js中的注释

javascript - AngularJs 中重复的 StickyHeader

php - 独立表单提交按钮

java - 强力大整数分解

java - 调用另一个类中的方法并存储返回的列表