Azure WebApp中的Tomcat无法启动

时间:2017-05-30 09:57:49

标签: java azure azure-web-sites azure-web-app-service

我在Azure中创建了一个webapp,并在D:\ home \ site \ wwwroot \ webapps文件夹中上传了一个war文件。我使用具有标准定价层的应用服务计划。 我已完成设置以在“应用程序设置”菜单中激活Java和Tomcat:

  • java版:Java 8
  • java minor version:最新
  • Web容器:最新的Tomcat

如果未激活“Always On”选项,则我的Tomcat无法启动。没有启动java进程,我的war文件没有解压缩。我做了几次停止/启动应用程序,没有任何反应。 一旦我激活了“Always On”,Tomcat就会启动并部署应用程序。 具有免费定价等级的服务计划中不提供“始终开启”。

有人知道为什么Azure会这样做吗?

2 个答案:

答案 0 :(得分:0)

我尝试重现你通过FTP所说的行为,这是我在Tomcat 8.5.6上观察到的@GopiKolla所说的,如下所示。

  1. 如果已禁用Always on选项,则上传的.war文件不会自动解压缩。但是,当我尝试访问.war文件的webapp的url时,它被解压缩到一个目录,该目录在十秒之后命名为war。
  2. 如果启用此选项,则会自动解压缩所有war文件& immdiately。
  3. 我检查了所有配置&环境变量包括属性autodeployunpackWARs& deployOnStartup等,这些不会随选项开关而改变。我从Tomcat的官方相关文档(123)中搜索了这个案例的解释,没有任何有用的信息可以解释它。只是一个猜测&根据我的经验,我认为Azure通过IIS限制运行时的生命周期,以确定是否通过选项httpPlatformHandler激活web.config中定义的Always on进程。

    希望它有所帮助。

答案 1 :(得分:0)

感谢您的反馈。 我昨天再次进行了测试,我想我已经了解了Azure WebApp的工作原理。 在webapps文件夹中上传war文件时,即使tomcat配置为解包并加载war,也不会启动java进程。

只有在您点击网站的网址时才会启动java进程。

如果您不点击,则不会分叉任何java进程。第一次单击将为Tomcat派生java进程。

我认为这是IIS工作者的正常行为。

现在,当我部署Java应用程序时,我总是对URL进行触摸以确保Web应用程序真正启动。