vlambda博客
学习文章列表

tomcat9升级10后,geoserver无法启动解决

前言:之前tomcat漏洞,只能升级tomcat版本,官方介绍如果原项目中有依赖javax.servlet,需要将该依赖同步更新为jakarta.servlet。开源的geoserver确实使用了servlet包,所以需要转换下。

#官方升级介绍https://blog.csdn.net/qq_39463175/article/details/88377270

Tomcat 10 及更高版本的用户应该知道,由于作为 Java EE 转移到 Eclipse 基金会的一部分而从 Java EE 转移到 Jakarta EE,所有已实现 API 的主要包 javax.*已从jakarta.*这几乎肯定需要更改代码以使应用程序能够从 Tomcat 9 及更早版本迁移到 Tomcat 10 及更高版本。已经开发了一个 迁移工具来帮助这个过程

一,准备环境

1,先下载相关的中间件和包

#tomcat10 下载https://tomcat.apache.org/download-10.cgi#geoserver 下载http://geoserver.org/release/maintain/#Jakarta EE 的 Apache Tomcat 迁移工具https://tomcat.apache.org/download-migration.cgi#也可以下载源码,自己编译这个工具https://github.com/apache/tomcat-jakartaee-migration

二,更新过程

1,在发布geoserver的war包时,tomcat10会报错,可以看到和 servlet有关

org.apache.catalina.core.StandardContext.listenerStart 配置应用程序监听器[org.geoserver.GeoserverInitStartupListener]错误 java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener

2,此时就需要用Jakarta EE工具转换一下geoserver的war包,为我将war包复制到jakartaee-migration 工具下的lib目录,注意如果是源码编译的工具,报名应该是jakartaee-migration-x.x.x-SNAPSHOT-shaded.jar

java -jar jakartaee-migration-1.0.0.jar geoserver.war  geoserver_new.war

3,将转换后war重新放进webapps目录,重启tomcat就可以了

注意,war包会覆盖当前解析的geoserver业务,所以不要生产和开发环境直接升级,如果是必须升级tomcat10,也只能新启动一个tomcat10,然后慢慢迁移geoserver的业务

三,源码编译工具

1,git bash里克隆tomcat-jakartaee-migration的仓库。今天git又抽风打不开,我直接在码云下载了

 git clone git@github.com:apache/tomcat-jakartaee-migration.git

2,安装Maven

按照迁移工具的说明,需要使用Maven对克隆的源码进行构建。我们来到Maven官网,根据自己的os进行下载。今天我全在Windows下操作,下载 apache-maven-x.x.x-bin.zip ,如果是Linux系统请下载上方的 .tar.gz 文件,下载到的是二进制文件,不需要安装,直接解压到一个目录即可。

#maven 下载https://maven.apache.org/download.cgi

解压后可以设置环境变量,这里我就不设置环境变量了,可以绝对路径使用

#有环境变量运行,在git下来的工具源码路径执行mvn verify#没设置环境变量就用绝对路径cd C:\tomcat-jakartaee-migration-main #cd到工具源码路径# 执行maven 命令,这个命令有点久C:\apache-maven-3.8.5-bin\apache-maven-3.8.5\bin\mvn.cmd  verify  

如图上就算是编译完成,包会保存在target目录,然后迁移war包,不过这里会报错,

java -jar jakartaee-migration-1.0.1-SNAPSHOT.jar geoserver.war geoserver_new.war

报错,不会java,这里只能作罢,以后再请教大佬看看

Exception in thread "main" java.util.zip.ZipException: Bad CRC checksum for entry WEB-INF/lib/spring-beans-5.2.20.RELEASE.jar: 295676c1 instead of 58064a31

四,总结

软件这种东西每天都在更新,如果要用别人的东西,只能跟着不断学习,以上就是tomcat9升级tomcat10,连带geoserver一起升级的方法。


最后的最后(Last but not least),欢迎交流: