Tomcat10 踩坑
1.场景描述
原项目是使用springboot2.3.9.RELEASE+ jdk1.8 + Tomcat8.5.64在服务器上以war包方式运行,由于给某银行做项目要求使用tomcat10以上版本,所以需要将Tomcat8升级到Tomcat10;
2.操作步骤
tomcat官网下载到Tomcat10.0.4免安装版,解压之后将程序放在Webapps下启动Tomcat
3.结果呈现
【7456】毫秒之后服务将启动,就一直卡着没反应。但是Tomcat10已经启动,能够访问到tomcat内置的页面
4.验证
验证1:可访问到tomcat首页
验证2:将静态文件放到Webapps下,可以访问到该静态页面
5.外在表现
发现未成功解析war包,原war接近100M,解析后仅为4096KB,不解析.class文件。
到官网使用中文翻译过来发现一段话
将需要进行二次编译的war包拷贝到和jakartaee-migration-0.2.0.jar同一个目录下(此处不同目录会报密钥什么的错误),然后执行二次编译命令即可编译成功,编译成功的war包扔到webapps目录下可以成功启动。
6.使用方法
1.正常方式打包出**.war包
2.将提前准备好的jakartaee-migration-0.2.0.jar与war放在同一目录下
3.二次打包需要使用到:jakartaee-migration-1.0.0-shaded.jar,将cs.war和xxx.jar。存放在同一目录下,使用时进入到当前目录的dos命令下,使用java -jar jakartaee-migration-1.0.0-shaded.jar cs.war cs1.war,等待打包完成。
4.此时的war包才与原来tomcat10 以下打出的war在形式上一致,此时放到webapps下,启动tomcat10在进行访问,可访问到接口等信息。
7.原因分析
Tomcat10之后将java EE的命名空间全部迁移到jaKarta,导致原本打包的war包内封装的.class文件全部失效,所以才需要使用官方提供的迁移工具进行迁移,估计后续会进行优化。