繁体   English   中英

在Microsoft Azure上使用Node JS运行jar文件

[英]Run jar file with node js on Microsoft Azure

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

  1. 节点js从用户那里获取请求
  2. 节点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文件。 谁能帮助我或提出更好的方法呢?

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

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

建议使用以下三种方法:

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

  2. 我搜索了一个名为jsreport开源报告软件。 它可以安装在MS Azure VM或Cloud Service上。 您可以参考Microsoft Azure上的下载页面“使用节点js运行jar文件”进行安装。 还有NodeJS的jsreport sdk http://jsreport.net/learn/nodejs 如果要在Azure云服务上使用jsreport ,则需要知道如何在Azure云服务上构建NodeJS应用https://azure.microsoft.com/zh-cn/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/zh-cn/documentation/articles/web-sites-create-web-jobs/https://azure.microsoft.com/ zh-CN / documentation / articles / service-bus-nodejs-how-to-use-queues /

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM