当前位置: 首页 > 知识库问答 >
问题:

Azure WebApp中的Tomcat未启动

羊舌承
2023-03-14

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

  • Java版:Java 8
  • Java小版本:最新
  • Web容器:最新的Tomcat

如果没有激活“Always On”选项,我的Tomcat就不会启动。没有启动Java进程,我的war文件没有解压缩。我已经做了几次停止/启动应用程序,但什么也没有发生。一旦我激活了“Always On”,Tomcat就会启动并部署应用程序。“始终开启”在具有自由定价级别的服务计划中不可用。

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

共有2个答案

汪翰墨
2023-03-14

谢谢你的反馈。昨天我又做了一次测试,我想我已经理解了Azure WebApp是如何工作的。当您在webapps文件夹中上传war文件时,即使将tomcat配置为解包并加载war,也不会启动Java进程。

它将启动Java进程只有当你点击你的网站的URL。

如果不点击,则没有分叉Java进程。第一次单击将为Tomcat派生Java进程。

我想这是IIS工作人员的正常行为。

所以现在,当我部署一个Java应用程序时,我总是在URL上执行触摸操作,以确保webapp真的启动了。

史懿轩
2023-03-14

我试图通过FTP再现您所说的行为,下面是我在Tomcat 8.5.6上观察到的@Gopikolla所说的,如下所示。

  1. 如果禁用始终打开选项,则上载的.war文件不会自动解压缩。但是,当我试图访问.war文件的webapp的url时,它在十秒钟后被解压缩到一个与war同名的目录。
  2. 如果启用此选项,所有war文件将自动立即解包。

我已经检查了所有的配置和环境变量,包括属性autodeployunpackwarsdeployonstartup等,这些都不会随着选项开关而改变。我从Tomcat的官方相关文档(1,2,3)中搜索了这个案例的解释,没有任何有用的信息可以解释它。只是一种猜测&根据我的经验,我认为Azure通过IIS限制运行时的生命周期,以确定是否通过Always ON选项激活Web.config中定义的HttpPlatformHandler进程。

希望有帮助。

 类似资料:
  • 它构建应用程序并按预期将其部署到Jetty。 现在我也想将相同的应用程序部署到Tomcat7,为了实现同样的目的,我运行了gradle war任务,如下所示: 运行该任务后,我可以在中看到deploy-1.0.war,当我试图将它部署到Tomcat7时,Tomcat没有接收到它。 我的问题是--我需要应用任何附加的插件来使应用程序可部署到Tomcat7吗? 多谢了。

  • 我有一个调用MMQ侦听器的Java Servlet。我正在Tomcat服务器中部署应用程序 AppServlet.java

  • 尝试启动Tomcat时出现一个通用错误。下面是StackTrace: 下面是POM:http://maven.apache.org/maven-v4_0_0.xsd“>4.0.0 edu.rutgers spring-social-orcid-client-boot spring-social-orcid-client-boot 1.1.0 多谢了。

  • 我正在以下链接中使用sysdeo插件进行tomcat安装: http://technologicaloddity.com/using-projects/Java-projects/setting-up-the-sysdeo-tomcat-plug-in/ 由于我需要从我的spring mvc在tomcat中运行solrserver,所以我选择了上面的链接。 我配置了所有的东西,也做了solr wa

  • Tomcat没有在eclipse中启动,Tomcat已经启动并且正在用完eclipse。 null 2. 原因:java.lang.NoClassDefoundError:lLogger;在java.lang.class.GetDeclaredFields0(本机方法)在java.lang.class.PrivateGetDeclaredFields(class.java:2397)在java.l