手写tomcat内置容器时,无法初始化ProtocolHandler(引用tomcat9.0以后版本出现的错误,在9.0版本以前没有)错误小记

今天在尝试通过java代码手写tomcat内置容器时,发现自己引用tomcat9.0.1版本 启动后控制台不报错,通过浏览器访问后发现,这是一个伪启动,随后我将tomcat版本换成8.5.42,再用java类启动ttomcat后,浏览器成功通过我自定义端口号访问到自定义路径,并且控制台的信息较之9.0.0也多了很多其他信息,如下图在这里插入图片描述
随后,我便就此问题上网寻找答案,然而在网上并没有发现该问题的提问以及分析,紧接着我就比较俩版本tomcat类的源码,在对比过程中,我发现9.0.1较之8.5.42多了一个方法getConnector(方法) 如下图(左图9.0.1版本,右图8.5.42版本)
在这里插入图片描述
8.5.42版本截图在这里插入8.5.42版本有上述图片描述
在这里插入图片描述
显然在9.0版本之前,init()和start()方法都会主动调用getConnector()方法,而9.0以后init()和start()方法中不在有this.getConnector()的调用,这就需要我们在手写tomcat内置容器时,手动去调用
随后在我将代码修改成如下图,便成功解决问题在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值