900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > springboot项目发布到独立的tomcat中运行

springboot项目发布到独立的tomcat中运行

时间:2023-03-07 04:19:50

相关推荐

springboot项目发布到独立的tomcat中运行

在开发阶段我们推荐使用内嵌的tomcat进行开发,因为这样会方便很多,但是到生成环境,我希望在独立的tomcat容器中运行,因为我们需要对tomcat做额外的优化,这时我们需要将工程打包成war包发进行发布。

1. 工程的打包方式为war

2. 将spring-boot-starter-tomcat的范围设置为provided

设置为provided是在打包时会将该包排除,因为要放到独立的tomcat中运行,是不需要的。

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency>

发现原来项目中没有配置上面配置,因为我们配置了Springboot,具有依赖传递,因此自动加上上面的配置,我们需要手动配上覆盖依赖传递的配置:

3. 修改代码,设置启动配置

需要继承SpringBootServletInitializer,然后重写configure,将Spring Boot的入口类设置进去。

package cn.qlq.config;import javax.sql.DataSource;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.support.SpringBootServletInitializer;import org.springframework.context.annotation.Bean;import org.springframework.ponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.PropertySource;import com.jolbox.bonecp.BoneCPDataSource;/*** 发布到独立的Tomcat需要继承SpringBootServletInitializer类并重写configure方法*/@Configuration // 通过该注解来表明该类是一个Spring的配置,相当于一个xml文件@ComponentScan(basePackages = "cn.qlq") // 配置扫描包@PropertySource(value = { "classpath:db.properties" }, ignoreResourceNotFound = true)public class SpringConfig extends SpringBootServletInitializer {@Value("${jdbc.url}")private String jdbcUrl;@Value("${jdbc.driverClassName}")private String jdbcDriverClassName;@Value("${jdbc.username}")private String jdbcUsername;@Value("${jdbc.password}")private String jdbcPassword;@Bean(destroyMethod = "close")public DataSource dataSource() {BoneCPDataSource boneCPDataSource = new BoneCPDataSource();// 数据库驱动 boneCPDataSource.setDriverClass(jdbcDriverClassName);// 相应驱动的jdbcUrl boneCPDataSource.setJdbcUrl(jdbcUrl);// 数据库的用户名 boneCPDataSource.setUsername(jdbcUsername);// 数据库的密码 boneCPDataSource.setPassword(jdbcPassword);// 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60);// 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0boneCPDataSource.setIdleMaxAgeInMinutes(30);// 每个分区最大的连接数boneCPDataSource.setMaxConnectionsPerPartition(100);// 每个分区最小的连接数boneCPDataSource.setMinConnectionsPerPartition(5);return boneCPDataSource;}@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {// 设置启动类,用于独立tomcat运行的入口return builder.sources(SpringConfig.class);}}

4.打war包:

打包成功:

5. 部署到tomcat

第一种:将此项目作为默认项目的部署方式

(1)将war包解压到webapps下的ROOT目录中(将原来的ROOT文件夹下面的东西删除掉),启动:

WEB-INF下面没有web.xml

解释:上面解压后的文件没有web.xml,但是仍能启动。因为SpringConfig继承了SpringBootServletInitializer,所以打包的时候spring-boot做了一系列初始化工作(如上面的org文件夹)。

(2)启动测试:

第二种:将此项目类似于普通的项目进行部署,访问需要加项目名称

(1)将打出的war包复制到Tomcat安装目录下的webapps目录下,并将war包重新命名为SSM.war,启动Tomcat(Tomcat启动的时候会自动扫描war包并解压)

(2)启动测试:

注意:

springboot项目方式不支持用Eclipse的export导出为war包然后部署到tomcat,因为这种Eclipse的Export打出的war包没有带springboot所做的初始化工作。打包的东西如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。