Java Tomcat使用war名称作为Spring引导的基本url

Java Tomcat使用war名称作为Spring引导的基本url,java,spring,tomcat,spring-boot,Java,Spring,Tomcat,Spring Boot,我有一个名为“springapp”的spring启动应用程序,其基本URI为: http://localhost:8080/ 当我把它作为一个独立的应用程序运行时,它运行得很好。但当我像Eclipse中的“run as-->run on Server”那样运行它时,它会将war名称附加为springapp-1.0-snapshot,并且基本URL会变成: http://localhost:8080/springapp-1.0-snapshot 我有没有办法解决这个问题。我希望URI是

我有一个名为“springapp”的spring启动应用程序,其基本URI为:

 http://localhost:8080/
当我把它作为一个独立的应用程序运行时,它运行得很好。但当我像Eclipse中的“run as-->run on Server”那样运行它时,它会将war名称附加为springapp-1.0-snapshot,并且基本URL会变成:

 http://localhost:8080/springapp-1.0-snapshot
我有没有办法解决这个问题。我希望URI是

 http://localhost:8080/springapp
我在application.properties中尝试了以下所有配置,但均无效:

 spring.webservices.path=/springapp
 server.tomcat.basedir=/springapp
 spring.jersey.application-path=/springapp
 server.contextPath=/springapp
 server.servlet-path=/springapp
这是我的入门课:

    @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
    @ImportResource("classpath:spring-config.xml")
    public class SpringAppStarter extends SpringBootServletInitializer {

        private static final Logger GENERAL_LOG = LogManager.getLogger(SpringAppStarter .class);

        @Override
        protected SpringApplicationBuilder configure(
                SpringApplicationBuilder application) {
            return application.sources(SpringAppStarter.class);
        }

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            GENERAL_LOG.info("Starting Spring  Service App");

            SpringApplication.run(SpringAppStarter .class, args);
        }
    }
和我的请求映射类:

 @RestController
 @RequestMapping("/Customers")
 public class SpringAppResource {
    @RequestMapping("/")
    public String index() {
        return "Greetings from Spring Boot!";
    }
 }
我还在META-INF文件夹中添加了上下文配置,如下所示:

 <Context>
     <context docBase="springapp" path="/springapp" reloadable="true"/>
 </Context>


我正在使用Maven构建项目。我不想更改服务名称。我需要在应用程序本身的某个地方提供上下文路径。服务器上不能有任何依赖项。我应该提供所有配置,所以部署后不需要进行任何配置。

您应该能够像这样重命名war

<build>
  <finalName>springapp</finalName>
 . . .
</build>

springapp
. . .

如果您正在使用eclipse,那么您可以通过转到
yourproject->properties->Web项目设置来更改根上下文。然后在此处更改上下文根并重新启动服务器

您还可以将Tomcat服务器上的应用程序名称更改为:

  • 在“服务器”视图中双击服务器实例
  • 将选项卡从“概述”切换到“模块”(在配置屏幕底部)
  • 在列表中选择您的应用程序,然后单击右侧的“编辑”
  • 将“Path”设置为“springapp”(或URI的任意名称)
  • 单击“确定”并保存更改

  • 现在,您的应用程序将位于URI:
    http://localhost:8080/springapp

    默认情况下,Tomcat使用war文件名作为上下文路径。快速搜索给了我这样一个信息:它告诉您如何使用作为应用程序的上下文路径,或者如何在Tomcathanks中设置上下文路径。理想情况下,这是我们为常规web服务所做的。我已经试过了,但它对spring boot不起作用。我认为这和spring boot没有任何关系。上下文路径应该由容器决定,然后web应用程序(在这里使用Spring Boot)才能执行任何操作。啊。。。我刚刚发现您正在通过Eclipse运行它。iirc,Eclipse运行Tomcat提供Tomcat配置时有一些技巧。类似于有一个包含配置的单独目录,这样Eclipse每次都会复制到Tomcat目录。所以,如果您直接更新Tomcat目录中的配置,它将无法正常工作,因为它被悄悄地替换了。它适用于普通的SpringWeb服务。我只是不能为春靴做这件事。您不需要重命名war来更改tomcat中的上下文路径。2.这是Maven POM的一部分,OP的问题中没有暗示他正在使用Maven进行构建(谢谢:)。我正在使用maven,但我不应该更改最终名称。谢谢,这是一种方法。但是我使用eclipse只是为了测试目的。谢谢你的解决方案。但我应该提供应用程序本身的所有配置。欢迎您。我在根级别“/”(无项目名称)使用我的项目,通过此设置,我非常有资格管理它。