Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 部署在Tomcat 8上的Spring boot存在结构或应用程序上下文问题_Angularjs_Tomcat_Spring Boot - Fatal编程技术网

Angularjs 部署在Tomcat 8上的Spring boot存在结构或应用程序上下文问题

Angularjs 部署在Tomcat 8上的Spring boot存在结构或应用程序上下文问题,angularjs,tomcat,spring-boot,Angularjs,Tomcat,Spring Boot,我有一个简单的spring启动应用程序,我可以在本地运行,并带有url。这是我的应用程序结构 当我将其打包为war并尝试在linux服务器中部署时,我无法使用我在本地服务器中加载的相同上下文()加载应用程序。我想我错过了什么,有人能指引我吗 下面是部署到tomcat服务器后的应用程序结构 在WEB-INF/classes/目录下,内容如下 默认情况下,部署到tomcat容器中的Spring引导将以其上下文根作为其war名称。假设您在8080端口的“localhost”上安装了tomcat。您

我有一个简单的spring启动应用程序,我可以在本地运行,并带有url。这是我的应用程序结构

当我将其打包为war并尝试在linux服务器中部署时,我无法使用我在本地服务器中加载的相同上下文()加载应用程序。我想我错过了什么,有人能指引我吗

下面是部署到tomcat服务器后的应用程序结构

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


默认情况下,部署到tomcat容器中的Spring引导将以其上下文根作为其war名称。假设您在8080端口的“localhost”上安装了tomcat。您将部署名为“abc.war”的war,这意味着您将其放入webapps目录。应用程序部署时,主文件夹为“abc”,其中包含其他文件夹(WEB-INF、META-INF等)。您现在可以创建该特定应用程序的上下文根

如果应用程序的端点路径为“cde/fg”,则将上下文根添加到此路径后,整个url将被删除

但是,如果您在8080端口“localhost”上运行的嵌入式容器中运行完全相同的spring boot应用程序(并且假设application.properties中没有提到server.context-path),则嵌入式容器中的上述端点将是

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

我想这细微的差别就是你所缺少的。如果我的猜测是正确的,在tomcat容器中部署后,只需将war名称添加到url中,如下所示-

{warname}/#/appName


默认情况下,当部署到tomcat容器中时,Spring引导将以其上下文根作为其war名称。假设您在8080端口的“localhost”上安装了tomcat。您将部署名为“abc.war”的war,这意味着您将其放入webapps目录。应用程序部署时,主文件夹为“abc”,其中包含其他文件夹(WEB-INF、META-INF等)。您现在可以创建该特定应用程序的上下文根

如果应用程序的端点路径为“cde/fg”,则将上下文根添加到此路径后,整个url将被删除

但是,如果您在8080端口“localhost”上运行的嵌入式容器中运行完全相同的spring boot应用程序(并且假设application.properties中没有提到server.context-path),则嵌入式容器中的上述端点将是

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

我想这细微的差别就是你所缺少的。如果我的猜测是正确的,在tomcat容器中部署后,只需将war名称添加到url中,如下所示-

{warname}/#/appName


当你说“在本地运行”时,你是否在使用嵌入式容器?还是tomcat的本地安装?如果未使用嵌入式容器,则应用程序上下文由容器而不是应用程序处理。在tomcat中,默认情况下它是war名称。如果您在嵌入式容器中运行spring boot应用程序,您可以在application.properties文件中使用“server.context path”指定上下文,我的意思是它在嵌入式容器中工作。后来,我创建了war并尝试在远程Tomcat服务器中部署它。正如我在文章中提到的,它是用不同的目录结构部署的。这就是我遇到的问题,我不知道如何打开应用程序。我只是将主类更改为扩展SpringBootServletializer,并将其打包为war,然后将其作为abc.war部署到Tomcat实例中。后来,我试着在本地访问它,作为参考,我在pom.xml中提供了依赖项spring启动程序tomcat。当你说“在本地运行”时,你是否使用了嵌入式容器?还是tomcat的本地安装?如果未使用嵌入式容器,则应用程序上下文由容器而不是应用程序处理。在tomcat中,默认情况下它是war名称。如果您在嵌入式容器中运行spring boot应用程序,您可以在application.properties文件中使用“server.context path”指定上下文,我的意思是它在嵌入式容器中工作。后来,我创建了war并尝试在远程Tomcat服务器中部署它。正如我在文章中提到的,它是用不同的目录结构部署的。这就是我遇到的问题,我不知道如何打开应用程序。我只是将主类更改为扩展SpringBootServletializer,并将其打包为war,然后将其作为abc.war部署到Tomcat实例中。后来,我尝试使用,因为我曾经在本地访问过,仅供参考,我在pom.xml中提供了依赖项spring boot starter tomcat,我完全同意你的看法,我也做过同样的事情。当我使用嵌入式容器在本地运行应用程序时,我使用远程Tomcat实例中的URL运行它,我部署的war是abc.war,我的路由由AngularJS控制。因此,我用URL访问应用程序,仅供参考,我的spring控制器用@RestControllerCan注释。有人能在这里点灯吗?我认为它没有识别resources/static/index.html中的index.html。它是index.html的正确位置还是应该放在其他地方。我试着把它放在/WEB-INF/classes下,但仍然不起作用。按照我的预期,默认情况下应该加载index.html,其他路由将根据导航添加Angular。如果有人面临类似问题,那么下面是我如何使其工作的。我不确定这是否是正确的方法,但它起了作用。我必须在“src/main/”中创建一个目录“webapp”,并将所有静态内容移动到该目录中。然后拉特