我制作了一个 Node js Web 应用程序来生成报告。我的想法是使用 .jasper 文件(jasper 报告)来生成这些报告。我已经尝试了一堆 Node js 库来执行此操作,但似乎没有任何效果。最后我继续制作一个 .jar 文件(java)来解决这个问题。流程如下:
- Node js 获取用户请求
- Node js 使用 child_process 运行 .jar 文件。它运行类似“java -jar MyApp.jar arg1 arg2 arg3”
- .jar 文件生成 pdf 并将其保存到文件夹
- .jar文件返回新生成的pdf文件的路径
- Node js获取路径并将pdf文件返回给用户
它在我的电脑上完美运行。然后我将其上传到 Microsoft Azure。似乎运行 .jar 文件步骤失败了,因为没有创建 pdf 文件。谁能帮助我或建议更好的方法来做到这一点?
最佳答案
如果您将 NodeJS Web 应用程序部署到 MS Azure WebApps 中,则该过程的步骤 2 无法生成用于运行 jar 可运行文件的子进程,因为 Java 运行时环境不包含您当前使用 NodeJS 的 Azure WebApp。
建议使用三种方法来执行此操作:
使用Azure VM安装NodeJS和Java,并像在本地计算机上一样在VM上部署您的应用程序。这个方法很简单。
我搜索了一个名为
jsreport
的开源报告软件。它可以安装在 MS Azure VM 或云服务上。您可以引用下载页面Run jar file with node js on Microsoft Azure安装它。还有 NodeJS 的 jsreport sdk http://jsreport.net/learn/nodejs 。如果你想在Azure云服务上使用jsreport
,你需要知道如何在Azure云服务上构建NodeJS App https://azure.microsoft.com/en-us/documentation/articles/cloud-services-nodejs-develop-deploy-express-app/ .改变你的流程。 NodeJS 获取用户的请求,并将其以指定的文件名和路径发送到 ServiceBus;修改为Azure WebJob的jar可运行文件从ServiceBus读取请求并生成具有给定文件名的pdf并将其保存到Azure Blob存储上的给定文件路径; NodeJS直接从Blob存储返回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/ .
关于javascript - 在 Microsoft Azure 上使用 Node js 运行 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33744055/