本文主要是介绍SpringBoot在Tomcat部署war包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
启动类配置
继承SpringBootServletInitializer
@SpringBootApplication
public class TestApplication extends SpringBootServletInitializer {public static void main(String[] args) {SpringApplication.run(TestApplication.class, args);}@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(TestApplication.class);}
}
打包方式配置
<packaging>war</packaging>
移除内置Tomcat
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency>
WebSocket错误
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency>
Bean按需加载
@Configuration
public class WebSocketConfig {@Bean@ConditionalOnProperty(name = "system.package", havingValue = "jar", matchIfMissing = true)public ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}
}
Tomcat设置
Host节点增加Context可以直接通过ip+端口方式访问,需要将appBase清除,防止启动两次应用
<Host name="localhost" appBase="" unpackWARs="true" autoDeploy="true"><Context path="" docBase="webapps/test" reloadable="false"/><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="localhost_access_log" suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host>
注意事项
对于框架封装引用jar包,需要注意工程项目中只能有一个类继承自SpringBootServletInitializer,否则会导致ApplicationContext初始化两次
这篇关于SpringBoot在Tomcat部署war包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!