我有一个简单的春季启动应用程序,我可以使用网址http://localhost:8080/#/appName在我的本地运行。这是我的申请结构
当我将其打包为战争并尝试在Linux服务器中部署时,我无法使用我能够在本地加载的相同上下文(http://SERVERNAME:PORT/#/appName)加载应用程序。我想我错过了什么,有人可以指导我。
以下是在tomcat服务器中部署之后的应用程序结构。
在WEB-INF / classes /目录下,内容如下。
答案 0 :(得分:1)
部署到tomcat容器中时,Spring引导默认情况下将其上下文根作为其war名称。让我们说你已经在" localhost"在端口8080上。您部署名为" abc.war"的战争,这意味着您将其放入webapps目录。应用程序部署时主文件夹为" abc"和其他文件夹(WEB-INF,META-INF等)。您现在将该特定应用程序的上下文根
如果您的应用程序的端点路径为" cde / fg",然后将上下文根添加到此路径,则整个URL将为
但,如果您在运行于" localhost"的嵌入式容器中运行完全相同的 spring boot应用程序。在端口8080上,(并假设application.properties没有在其中提及server.context-path),那么嵌入式容器中的上述终点将是
然后,应用程序将部署在容器的根上下文中。
我认为这种微妙的差异就是你所缺少的。如果我的猜测是对的,那么在tomcat容器中部署后,只需将战争名称添加到网址中,就像这样 -
http://SERVERNAME:PORT/ {warname} /#/ APPNAME