如何在azure上运行.jar文件

时间:2016-04-02 12:30:49

标签: java azure

我有一个复杂的.jar文件,我需要在azure上运行(C#ASP.NET)。在我的本地系统上,我只是运行java.exe并将jar作为参数传递给它。我想在服务器上做同样的事情,但是,我不知道java.exe的位置。

我看了一下环境变量并发现了很多jdk和jre引用,所以我认为它是可能的。

我无法使用ikvm,因为jar太复杂而无法正常运行。

所以,作为总结:java.exe位于azure的哪个位置?如果不是(我不能这样做),我还能做些什么呢?

编辑:

澄清更多:我正在使用ASP.NET开发一个Web应用程序。我有一个我必须运行的.jar文件,在本地机器上我运行它:

 processStartInfo = new ProcessStartInfo("java");
 processStartInfo.Arguments = arguments;
 //more options
 Process process = new Process();
 process.StartInfo = processStartInfo;

 process.Start();
 process.WaitForExit();

现在我将这个网站发布到微软的Azure服务中,我想做同样的事情。除了,按原样运行它告诉我,该过程无法运行(即他们不理解" java"是什么)。我想找到一种方法可以将java作为一个进程调用。显然,如果我知道java.exe的路径,我只需将路径作为命令运行,我就完成了(即它将执行java)。这就是我需要帮助的地方。

2 个答案:

答案 0 :(得分:3)

正如derpirscher在评论中提到的那样,您还没有指定要使用的Azure服务类型,并且您还没有指定Java代码的性质(它是否侦听某些端口上的传入连接) ?它与任何外部服务进行对话吗?等等)。更多信息将帮助我们为您提供更好的答案。

那说......开始的一个选项是Azure Web Jobs,它允许您上传和运行(以及其他选项)Java .jar文件:

Azure Web Jobs overview

如该链接上的信息所示,您可以按需,连续或定期运行。这里有一些额外的细节:

Executing Java Web Jobs on Azure

有关在Azure上运行Java代码以及从Java代码中与Azure服务交互的更多常规信息,请参阅此处:

Azure Java Dev Center

具体来说,以下是Web作业之外的一些其他部署选项:

Deploying Java code on Azure

祝你好运!

根据您的其他反馈进行编辑:

因此,如果我理解,您希望在用户输入某个查询等时从ASP.NET应用程序生成新进程来调用Java .jar文件?

我可以想到两个可能的选择:

  1. 在使用正确版本的Java等自定义的Azure虚拟机上托管ASP.NET应用程序和.jar。这样您就可以按照自己喜欢的路径配置Java,等

  2. 将用于托管ASP.NET应用程序的资源与用于调用Java代码的资源分离(例如)将您的站点托管为Azure Web App并将消息从那里写入Azure存储队列Java代码应该执行的时间。在队列的接收端,您将Azure Web作业配置为侦听该队列,并在新消息到达时执行.jar文件。

  3. Triggering a Web Job from an Azure Queue

    一般而言,从可扩展性和纯设计角度来看,选项2将更为可取(允许您将接受查询与处理查询的关注点分开,将成本与实际资源消耗直接对齐等),但选项1可能更容易从不熟悉Azure或云架构的人的角度来看。

    请注意,根据您必须执行的处理的性质,预期的并发用户数等,可接受的基于VM的解决方案可能比上述选项1更昂贵。像云计算中的许多事情一样,它最终需要在此处进行时间与费用之间的权衡。

答案 1 :(得分:2)

假设您在C#/ ASP.NET中的应用程序在Azure WebApp上运行Azure App Service。因此,您可以通过URL https://<your-webapp-name>.scm.azurewebsites.net/DebugConsole访问Kudu控制台,然后您可以命令cd ..\"Program Files (x86)"\Java移动到不同版本的Java SDK集合的路径。

请尝试使用java.exe的绝对路径(如D:\\Program Files (x86)\\Java\\jdk<version\\bin\\java.exe>)作为C#类ProcessStartInfo的参数。

但是,我仍然建议您尝试使用Azure VM部署应用程序,并通过在VM上配置相关环境变量来运行应用程序。