在Microsoft Azure上运行带有节点js的jar文件

时间:2015-11-16 20:31:12

标签: javascript java node.js azure

我创建了一个节点js web app来生成报告。我的想法是使用.jasper文件(jasper报告)来生成这些报告。我尝试过一堆节点js库来做这件事,但似乎没什么用。最后我继续制作一个.jar文件(java)来解决这个问题。过程如下:

  1. 节点js从用户
  2. 获取请求
  3. 节点js使用child_process运行.jar文件。它运行类似" java -jar MyApp.jar arg1 arg2 arg3"
  4. .jar文件生成pdf并将其保存到文件夹
  5. .jar文件返回新生成的pdf文件的路径
  6. 节点js获取路径并将pdf文件返回给用户
  7. 它在我的电脑中完美运行。然后我将其上传到Microsoft Azure。似乎run .jar文件步骤失败,因为没有创建pdf文件。任何人都可以帮助我或建议更好的方法吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

有三种建议的方法可以做到这一点:

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

  2. 我搜索了一个名为jsreport的开源报告软件。它可以安装在MS Azure VM或Cloud Service上。您可以参考下载页面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应用程序。

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

  4. 对于Azure WebJob&服务总线,您可以参考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/