部署在Tomcat 8上的Spring引导具有结构或应用程序上下文问题

时间:2016-11-04 02:15:26

标签: angularjs tomcat spring-boot

我有一个简单的春季启动应用程序,我可以使用网址http://localhost:8080/#/appName在我的本地运行。这是我的申请结构

enter image description here

当我将其打包为战争并尝试在Linux服务器中部署时,我无法使用我能够在本地加载的相同上下文(http://SERVERNAME:PORT/#/appName)加载应用程序。我想我错过了什么,有人可以指导我。

以下是在tomcat服务器中部署之后的应用程序结构。

enter image description here

在WEB-INF / classes /目录下,内容如下。

enter image description here

1 个答案:

答案 0 :(得分:1)

部署到tomcat容器中时,Spring引导默认情况下将其上下文根作为其war名称。让我们说你已经在" localhost"在端口8080上。您部署名为" abc.war"的战争,这意味着您将其放入webapps目录。应用程序部署时主文件夹为" abc"和其他文件夹(WEB-INF,META-INF等)。您现在将该特定应用程序的上下文根

  

http://localhost:8080/abc

如果您的应用程序的端点路径为" cde / fg",然后将上下文根添加到此路径,则整个URL将为

  

http://localhost:8080/abc/cde/fg

,如果您在运行于" localhost"的嵌入式容器中运行完全相同的 spring boot应用程序。在端口8080上,(并假设application.properties没有在其中提及server.context-path),那么嵌入式容器中的上述终点将是

  

http://localhost:8080/cde/fg

然后,应用程序将部署在容器的根上下文中。

我认为这种微妙的差异就是你所缺少的。如果我的猜测是对的,那么在tomcat容器中部署后,只需将战争名称添加到网址中,就像这样 -

  

http://SERVERNAME:PORT/ {warname} /#/ APPNAME