Java Tomcat使用war名称作为Spring引导的基本url
我有一个名为“springapp”的spring启动应用程序,其基本URI为: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是
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只是为了测试目的。谢谢你的解决方案。但我应该提供应用程序本身的所有配置。欢迎您。我在根级别“/”(无项目名称)使用我的项目,通过此设置,我非常有资格管理它。