【问题标题】:How can I run a .jar file on azure如何在 azure 上运行 .jar 文件
【发布时间】:2016-04-05 17:08:25
【问题描述】:

我有一个复杂的 .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();

现在我将这个网站发布到 Microsoft 的 azure 服务,我也想做同样的事情。除了,按原样运行它告诉我该进程无法运行(即他们不明白什么是“java”)。我想找到一种能够将 java 作为进程调用的方法。显然,如果我知道 java.exe 的路径,我只需将路径作为命令运行即可(即它将执行 java)。这就是我需要帮助的地方。

【问题讨论】:

  • 什么“天蓝色”? AzureVM、Azure WorkerRole、Azure WebRole?

标签: java azure


【解决方案1】:

正如 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. 将您的 ASP.NET 应用程序和 .jar 托管在您使用正确版本的 Java 等自定义的 Azure 虚拟机上。这将允许您以您喜欢的方式配置 Java,在您想要的路径上,等等。

  2. 将用于托管 ASP.NET 应用程序的资源与用于调用 Java 代码的资源分离开来Java 代码应该执行的时间。在队列的接收端,您将配置一个 Azure Web 作业,以侦听该队列并在新消息到达时执行您的 .jar 文件。

Triggering a Web Job from an Azure Queue

从可伸缩性和纯设计的角度来看,通常选项 2 更可取(允许您将接受查询与处理查询的关注点分开,最直接地将成本与实际资源消耗等保持一致)但选项 1 可能更容易从不熟悉 Azure 或云架构的人的角度来看。

只需知道,根据您必须执行的处理的性质、预期的并发用户数量等,可接受的基于 VM 的解决方案可能比类似于上述选项 1 的解决方案更昂贵。就像云中的许多东西一样,它最终是您必须在这里做出的时间与费用的权衡。

【讨论】:

  • 您好,感谢您的回复。这些并不完全符合我的需求(因为我根据用户的输入运行小程序,所以每次给出某个查询时它都会运行,等等)。我将问题更新为更具体,也许现在你可以给我我正在寻找的答案:)?
【解决方案2】:

假设您在 C#/ASP.NET 中的应用程序在 Azure 应用服务(如 Azure WebApp)上运行。所以你可以通过urlhttps://<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 上配置相关环境变量来运行应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-28
    • 2013-03-17
    • 2010-11-17
    • 2017-04-23
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多