我在Azure中创建了一个webapp,并在D:\ home \ site \ wwwroot \ webapps文件夹中上传了一个war文件。我使用具有标准定价层的应用服务计划。 我已完成设置以在“应用程序设置”菜单中激活Java和Tomcat:
如果未激活“Always On”选项,则我的Tomcat无法启动。没有启动java进程,我的war文件没有解压缩。我做了几次停止/启动应用程序,没有任何反应。 一旦我激活了“Always On”,Tomcat就会启动并部署应用程序。 具有免费定价等级的服务计划中不提供“始终开启”。
有人知道为什么Azure会这样做吗?
答案 0 :(得分:0)
我尝试重现你通过FTP所说的行为,这是我在Tomcat 8.5.6上观察到的@GopiKolla所说的,如下所示。
Always on
选项,则上传的.war
文件不会自动解压缩。但是,当我尝试访问.war
文件的webapp的url时,它被解压缩到一个目录,该目录在十秒之后命名为war。我检查了所有配置&环境变量包括属性autodeploy
,unpackWARs
& deployOnStartup
等,这些不会随选项开关而改变。我从Tomcat的官方相关文档(1,2,3)中搜索了这个案例的解释,没有任何有用的信息可以解释它。只是一个猜测&根据我的经验,我认为Azure通过IIS限制运行时的生命周期,以确定是否通过选项httpPlatformHandler
激活web.config
中定义的Always on
进程。
希望它有所帮助。
答案 1 :(得分:0)
感谢您的反馈。 我昨天再次进行了测试,我想我已经了解了Azure WebApp的工作原理。 在webapps文件夹中上传war文件时,即使tomcat配置为解包并加载war,也不会启动java进程。
只有在您点击网站的网址时才会启动java进程。
如果您不点击,则不会分叉任何java进程。第一次单击将为Tomcat派生java进程。
我认为这是IIS工作者的正常行为。
现在,当我部署Java应用程序时,我总是对URL进行触摸以确保Web应用程序真正启动。