Java Azure应用程序服务上的Jetty部署是如何工作的?
我有一个在Azure应用程序服务实例上运行的Java web应用程序。为了部署它,我使用了一个带有.war文件的Bitbucket repo。当我向这个repo提交一个新的.war文件时,它应该由服务自动部署。但是,通常情况下,我必须重新启动、重新部署,甚至通过FTP上传.war文件才能成功完成部署 我有一个Jetty实例驻留在此服务中,因此我的Java Azure应用程序服务上的Jetty部署是如何工作的?,java,azure,deployment,jetty,azure-api-apps,Java,Azure,Deployment,Jetty,Azure Api Apps,我有一个在Azure应用程序服务实例上运行的Java web应用程序。为了部署它,我使用了一个带有.war文件的Bitbucket repo。当我向这个repo提交一个新的.war文件时,它应该由服务自动部署。但是,通常情况下,我必须重新启动、重新部署,甚至通过FTP上传.war文件才能成功完成部署 我有一个Jetty实例驻留在此服务中,因此我的.war文件名为ROOT.war。好的,当上传到服务时(无论是通过Bitbucket还是FTP),这个.war文件应该未归档到同一个目录中,即/site
.war
文件名为ROOT.war
。好的,当上传到服务时(无论是通过Bitbucket还是FTP),这个.war文件应该未归档到同一个目录中,即/site/wwwroot/webapps
。就我而言,这不会发生。web应用程序与单独位于/site/wwwroot/webapps
中的ROOT.war
文件一起工作。每隔一段时间,我就会在/site/wwwroot/webapps
下找到一个ROOT
文件夹,其中有两个默认文件index.jsp
和background.png
。我一点也不知道是什么原因导致根目录
文件夹与这些默认文件一起出现。我唯一的线索是,在我更改了一个环境变量之后,它发生了几次
此外,在出现带有空服务器文件的ROOT
文件夹后,我可以重新部署应用程序的唯一方法是通过FTP或门户中提供的控制台手动删除此ROOT
文件夹,然后我的重新部署请求才能在我的web应用程序中成功
所以,如果还不够清楚,我的问题是这里发生了什么?我对我所面临的行为一无所知。我觉得我在盲目地使用这个Azure服务,当出现问题时无法修复任何东西。是否有任何资源可以解释部署web应用程序时在后台发生的情况?因此,Azure API应用程序是PAAS,而不是IAAS服务。通过访问
yoursite.scm.azurewebsites.net
,您可以在CMD或Powershell中浏览文件系统,并可以查看正在运行的进程,从而访问PaaS平台。这可能会让人觉得你在一个虚拟机上,但事实并非如此。您在此处看到的数据将复制到您的API应用程序实例中。您可以通过缩放API应用程序来控制实例的数量
我经常看到您在部署时遇到的问题,然后ROOT是空的(在内部工作以查看此修复…)。
对我来说,最好的方法就是停止你的API应用程序,手动解压缩你的ROOT.war。将文件移动到/ROOT/,然后启动API应用程序
您可以简单地放置ROOT.war,并在重新打开时让系统解压它,但这有时会导致根目录为空,然后需要重新启动
所有这些让我转而使用Spring Boot。无需拆包。只需配置web.config并删除jar文件
我也有同样的问题。解决方案是在解除部署后调用端点
我花了很多时间弄清楚问题出在哪里。你能在github上就此提出问题吗?我相信存储库可能是这样的:@ThiagoCustodio我实际上使用的是Azure Search REST API,所以我只是从我的应用程序发送请求,而不是使用Azure提供的任何库。@halileohalilei我的建议是尝试将完整的文件结构添加到BitBucket repo以部署你的应用程序,而不是
webapps
下的war文件,例如repo中的webapp//
。@ThiagoCustodi这实际上是Azure API应用程序平台问题,而不是Azure sdk for java问题,可能应该在支持票证中提出。这个问题是众所周知的(我曾亲自与团队讨论过),但展示它对更多人的影响有助于提高优先级。