2012-02-05 22 views
1

我正在探索Azure平台,但遇到问题。Azure:Java webrole

其实,有件事情我不明白......

我明白了一个Web角色和辅助角色之间的区别。 但是如何专门为Java应用程序创建Web角色?

由于日食深化发展一个Java应用程序的蔚蓝的时候,我们要复制/粘贴一个Java服务器(我拿起tomcat7)+ JDK。我假设它只是在模拟器中运行java应用程序。

但是,当应用程序部署到azure作为一个webrole .....它只上传war包+ xml配置文件(cscfg和其他),还是上传服务器和jdk? 我试图建立与“云”的参数,而不是“模拟器”参数的项目,它创造了150MB的一个巨大的cspkg文件......我认真不能每次都让我有更新的应用上传150MB ...

为什么不只允许上传.war文件?如果我们必须上传服务器分发版,那么如何设置故障转移和会话复制?

我可能会错过一些信息

谢谢您的回答


编辑:

其实,从我从网上阅读,Java应用程序本身不处理所以你必须在软件包内部提供你自己的应用程序服务器(tomcat,glassfish等),启动脚本将在你的应用程序中运行服务器。每次要重新部署新软件包时,都必须上传jre +服务器二进制文件+应用程序代码。

有用于会话复制或任何没有内置的支持。如果您希望会话跨多个实例“共享”,则必须使用表存储服务来存储会话信息。

注:用eclipse,在最新的插件可以让你设置粘性会话,但我不知道任何有关它

因此,Java应用程序不部署为webrole但作为一个辅助角色,其中你添加你自己的服务器。

Webroles仅在.NET和PHP应用程序。

纠正我,如果我错了。

+0

您不需要在部署包中包含Java或Tomcat,也可以将它们存储在blob存储中,并在启动脚本中将它们复制到本地存储并启动tomcat。本地vm存储速度非常快,我正在开发一个演示应用程序,它可以完成同样的任务,将JRE和Tomcat移动到blob存储时,程序包大小从大约160MB降至70MB。当代码可用时,我会在几周内更新这篇文章,但有很多资料显示如何做到这一点。 – 2012-02-06 01:02:29

回答

1

你说得对。一般来说,您也可以在Web角色中运行java/Tomcat,但在Web角色中,IIS内必须至少有一个站点(不要将端口80作为IIS绑定到此站点,并且Tomcat不能共享TCP端口)。

你应该尝试与天青VM Role。在这种情况下,您需要使用全部系统要求(JRE,Tomcat,...)在本地创建虚拟主机。您将此虚拟映像上载到Azure作为VM角色的模板。现在您只能上传您的应用程序文件。

您也可以加快与的Starup任务下载和BLOB存储解压您的JRE和Tomcat上传/部署过程。 Azure Bootstrapper可以帮助你。

+0

我不同意 - 你不需要虚拟机角色来运行Java。您只需启动Tomcat,Jetty等。如果您使用VM角色,则您现在还必须管理操作系统升级,而且这样做绝对没有优势。另外:OP还关心上传一个170MB的软件包。使用虚拟机角色,这意味着推动整个虚拟机,比部署包大得多。 – 2012-02-06 00:59:56

1

感谢您的回答家伙。

这带来了另一个问题:当部署新版本的java包时,“底层”会发生什么?让我们想象一下,tomcat发布了一个重要的安全修复程序,您需要通过将其嵌入到cspkg(heavyyyyy)中来使用新版本的tomcat,或者像您(David)所建议的那样,通过将其存储在blob(light! ),当然还有几个更新的java代码。你在已经运行的实例上部署这个包。

他们会怎么样?他们是否重新启动新的软件包?它是否产生新的实例并杀死当前的运行?它是否会在每个实例中终止正在运行的应用程序服务器并在新包中运行新服务器? (非持久性)本地存储(如果用作便宜缓存)会发生什么?使用中的会话会发生什么(如果它们没有存储在blob中,但只存储在内存中)?

Azure中有不同的java服务器的基准/比较表吗? (内存占用,并发连接等。)

我的问题可能看起来很奇怪,但我目前正在使用Google App Engine(并且愿意转移到Azure),并且我必须执行的唯一操作是部署/更新应用程序是点击eclipse中的Deploy按钮,所以目前情况仍然令人困惑 但实际上,你必须上传你自己的jre和你自己的应用程序服务器,这增加了很大的自由度,它带来了一块IaaS PaaS