簡體   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