在Microsoft Azure上使用节点js运行jar文件

我做一个节点的JS Web应用程序生成报告。 我的想法是使用.jasper文件(jasper报告)来生成这些报告。 我试过一堆节点js库来做到这一点,但似乎没有任何工作。 最后我继续制作一个.jar文件(java)来解决这个问题。 过程如下:

  1. 节点js从用户那里得到请求
  2. 节点js使用child_process运行.jar文件。 它运行类似于“java -jar MyApp.jar arg1 arg2 arg3”
  3. .jar文件生成pdf并保存到一个文件夹
  4. .jar文件返回新生成的pdf文件的path
  5. 节点js获取path并将pdf文件返回给用户

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

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

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

有三种build议的方式来做到这一点:

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

  2. 我search了一个名为jsreport开源报告软件。 它可以安装在MS Azure VM或Cloud Service上。 您可以参考下载页面使用Microsoft Azure上的节点js运行jar文件进行安装。 还有NodeJS http://jsreport.net/learn/nodejs的jsreport sdk。 如果要在Azure云服务上使用jsreport ,则需要了解如何在Azure云服务上构buildNodeJS应用程序https://azure.microsoft.com/zh-cn/documentation/articles/cloud-services-nodejs-develop- deploy-express-app / 。

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

对于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 / 。