我在Azure中创建了一个webapp,并在D:\home\site\wwwroot\webapp文件夹中上传了一个war文件。我使用了一个带有标准定价层的应用服务计划。我在应用程序设置菜单中完成了激活Java和Tomcat的设置:
如果“始终打开”选项没有激活,我的Tomcat就不会启动。没有启动java进程,我的war文件也没有解压缩。我已经做了几次停止/启动应用程序,但什么都没有发生。一旦我激活了“始终打开”,Tomcat就会启动并部署应用程序。“始终打开”在服务计划中没有免费的定价层。
有人知道为什么Azure会这样吗?
发布于 2017-05-31 08:25:40
我试图复制您通过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进程。
希望能帮上忙。
发布于 2017-06-01 12:34:05
感谢您的反馈。昨天我又做了一次测试,我想我已经理解了Azure WebApp的工作原理。当您在webapp文件夹中上传war文件时,即使tomcat配置为解压缩和加载war,java进程也不会启动。
只有当你点击网站的.时,它才会启动java进程
如果不单击,则不会分叉java进程。第一次单击将分叉Tomcat的java进程。
我想这是IIS工作人员的正常行为。
因此,现在,当我部署Java应用程序时,我总是对URL执行一次操作,以确保webapp真正启动。
https://stackoverflow.com/questions/44259065
复制相似问题