SpringBoot减低版本适配Tomcat7.0.109,并打包部署war包到Tomcat7

背景

        我们新建的Spring boot项目采用的是Spring boot默认的tomcat容器进行开发(默认9.0.23),我们的程序需要部署到客户的容器中,后面发现客户使用的是tomcat7.0.109版本。所以为了适配,我们需要将项目的tomcat版本减低到Tomcat7.0.109,并将项目打成war包,部署到Tomcat7.0.109上运行。

        刚接触Spring boot,发现网上的教程没有让我觉得很详细的,故在此记录。

过程步骤

Spring boot适配Tomcat7

        Spring boot默认的适配的Tomcat版本号取决于Spring boot的版本,那么我们我们想要修改Tomcat的版本需要怎么做呢?

一、直接采用修改版本号

首先我们看我们新建的项目内容(pom.xml)

从上可以看出,我们采用的Spring boot版本是2.2.2,那他采用的Tomcat版本是多少呢,我们可以直接ctrl+以上截图位置(2次),然后我们就可以看到查到

这就是我们默认的Tomcat版本,可以运行项目进行对比

证明版本无误,那么我们来修改Tomcat版本

1、直接在pom.xml中覆盖默认的版本

 

运行项目

 

版本修改成功,这么简单?是的,如果我们需要修改的Tomcat版本于你使用的Spring boot版本是对应的,则可以直接这样修改,但是我们需要修改的是Tomcat7.0 .109,然后

运行项目,发现 

为什么?,在这一步对于新手来说很不友好,而且网络上的很多文章都没有说的很清楚,导致我在这一步用了几个小时,采用网上的各种方法都不行,其实是思路错了。那应该怎样修改呢,这涉及到第二种方法

二、通过降低Spring boot的版本来降低Tomcat版本

首先我们需要知道一个知识点:Spring boot不同的版本采用的tomcat版本是不一样的,或者说不同的Springboot版本对应的Tomcat版本是有限制的。比如我项目中用到的Spring boot2.2.2,采用的Tomcat版本是 

 

发现他适配的是Tomcat9,所以我们在这想通过以上的方式适配Tomcat7是无论如何都不能成功的 。

附上Springboot版本对应Tomcat版本的地址

Spring boot版本对应关系

那么我们的思路就需要转变了,要想适配Tomcat7,则需要减低Spring boot的版本;

这里我们采用Spring boot1.5.9

这里就有一个疑问了,我们通过以上的链接可以查到Spring boot1.5.9对应的Tomcat版本是Tomcat8,那为什么也能适配Tomcat7呢?这里我也不清楚,希望有知道的可以告知!

 

 经过以上的步骤,我们通过减低Spring boot的版本来降低Tomcat版本,并配置Tomcat版本

 运行项目

结果已经出来了,Tomcat版本修改成功。当然如果项目中用到了hibernate,同样也需要降低版本,这个在网络上还是能查到有用的信息

 

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<scope>provided</scope>
</dependency>

加入以上代码 运行即可。

可能存在的问题

  1. hibernate的Dao类中Query和Session的路径需要修改成
  2. 报错:getCurrentSession报空指针错误,这个错误你可能在网上会查到采用openSession的解决方式,一定不要这样做,因为这样相当于每次都openSession,导致session的连接数很快就会满,报连接数超过的异常,然后你又会去解决连接数并发的错误,无穷无尽,其实也是整个思路错了。解决这个错误我们只需要在application.properties中加入一下代码即可。
    spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
  3. 经过以上操作,你的项目已经能正常运行,这个时候你启动客户端发现所有的http地址都报404,然后你又在网上一顿搜索,发现都无法解决你的问题。后面想想404无非就是路径错了,那是不是路径配置有问题呢,我们通过下图就很明了了,修改运行项目,发现接口请求正常
  4. sql异常,如果你的sql采用了?0,这样的占位符的话,则只要去掉0即可。

经过以上的步骤,Spring boot适配Tomcat7.0.109的工作已经完成,通过以上也能看到这个过程中会遇到很多问题,这个时候需要我们沉下心慢慢思考,每一步骤都采用怀疑的态度去对待网上的资料(包括我这篇),最好弄清楚他报错的底层逻辑,而不是只关注面上的错误日志。

 

Tomcat打包war

 打包的话,资料有很多,但是也少有一查就能正常运行的,这里我附上我找到的这一篇文章吧,步骤很清晰明了,按照操作执行之后效果立竿见影。

tomcat打war包

需要注意的一点是,打包运行的时候要将内置的Tomcat屏蔽掉(Spring Boot内置了Tomcat,我们打包的时候同样也会将Tomcat打包到war中,然后我们再将war部署到Tomcat中,读这段文字就发现问题了吧,所以我们在打包的时候需要屏蔽掉Spring boot内置的Tomcat),在测试开发阶段则不需要屏蔽Spring boot内置的Tomcat

打包的时候将注释放开,测试运行的时候将注释加上!

以上则是SpringBoot减低版本适配Tomcat7.0.109,并打包部署war包到Tomcat7的全部内容,最后附上Tomcat各版本下载地址

Tomcat下载地址

求知若饥、虚心若愚

 

要将 Node.js 版本降低,可以使用 Node.js 版本管理工具 nvm (Node Version Manager)。首先,你需要安装 nvm 工具,你可以在 https://github.com/coreybutler/nvm-windows/releases 下载最新版本的 nvm(如果你使用的是 Windows 系统)。确保下载的是适合你操作系统的版本。 安装完 nvm 后,打开命令行界面,输入以下命令来查看可用的 Node.js 版本列表: nvm list available 从列表中选择你想要的较低版本,然后使用以下命令来安装选定的版本: nvm install <version> 例如,如果你想要安装 Node.js 的 12.18.4 版本,可以执行以下命令: nvm install 12.18.4 安装完成后,你可以使用以下命令来切换到已安装的版本: nvm use <version> 例如,要切换到 12.18.4 版本,可以执行以下命令: nvm use 12.18.4 这样,你就成功将 Node.js 版本降低到了你选择的版本。请注意,降低 Node.js 版本可能会导致某些项目无法正常运行,因为项目依赖可能与较低版本的 Node.js 不兼容。所以在降低版本之前,请确保你的项目兼容目标版本的 Node.js。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [node.js降低版本的方式(解决sass和node.js冲突)](https://blog.csdn.net/m0_52861000/article/details/129157090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [nvm切换node版本,降低或升高node版本](https://blog.csdn.net/mao0523/article/details/127447383)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值