2015-11-16 31 views
2

我制作了一个节点js web应用程序来生成报告。我的想法是使用.jasper文件(jasper报告)来生成这些报告。我试过一堆节点js库来做到这一点,但似乎没有任何工作。最后我着手制作一个.jar文件(java)来解决这个问题。过程如下:在Microsoft Azure上运行带节点j的jar文件

  1. 节点JS从用户的GET请求
  2. 节点JS运行使用child_process .jar文件。它运行像“Java的罐子MyApp.jar ARG1参数3”
  3. .jar文件生成PDF文件,并保存到文件夹
  4. .jar文件返回新生成的PDF文件
  5. 节点JS获取的路径路径和返回pdf文件给用户

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

+0

是否有任何错误? –

+0

您是否在Azure虚拟机上运行Java? – kappaallday

回答

0

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

0

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

有做这三种建议的方式:

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

  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直接将pdf文件从Blob存储返回给用户。

为天青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/