【问题标题】:Run jar file with node js on Microsoft Azure在 Microsoft Azure 上使用节点 js 运行 jar 文件
【发布时间】:2015-11-16 20:31:12
【问题描述】:

我制作了一个 node js web 应用程序来生成报告。我的想法是使用 .jasper 文件(jasper 报告)来生成这些报告。我已经尝试了一堆节点 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. 节点js获取路径并返回pdf文件给用户

它在我的电脑上完美运行。然后我将它上传到 Microsoft Azure。似乎运行 .jar 文件步骤失败,因为没有创建 pdf 文件。任何人都可以帮助我或提出更好的方法吗?

【问题讨论】:

  • 有错误吗?
  • 您在 Azure VM 上运行 Java 吗?

标签: javascript java node.js azure


【解决方案1】:

如果您将 NodeJS webapp 部署到 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 http://jsreport.net/learn/nodejs 的 jsreport sdk。如果你想在Azure云服务上使用jsreport,你需要知道如何在Azure云服务https://azure.microsoft.com/en-us/documentation/articles/cloud-services-nodejs-develop-deploy-express-app/上构建NodeJS App。

  3. 更改您的流程。 NodeJS 获取用户的请求,并以指定的文件名和路径发送到 ServiceBus;修改为 Azure WebJob 的 jar 可运行文件从 ServiceBus 读取请求并生成具有给定文件名的 pdf 并将其保存到 Azure Blob Storage 上的给定文件路径; NodeJS 直接从 Blob Storage 返回 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/

【讨论】:

    【解决方案2】:

    我怀疑您的 Java PDF 生成调用了受应用服务沙箱限制的 API。大多数 PDF 呈现引擎使用 GDI+,它的大部分功能受 Azure 应用服务沙箱限制。但是,此政策在专用服务器上有所放宽。扩展到专用服务器应该可以解决这个问题(即不是共享或免费 SKU)。

    【讨论】:

      猜你喜欢
      • 2016-06-06
      • 1970-01-01
      • 2016-06-29
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 2018-02-19
      相关资源
      最近更新 更多