大飞断案第一期:ajp端口无故躺枪,现场留证 timeout < 0

缘起

今天接到报案、tomcat和sts吵架吵得不可开交。发生一起老项目调试的时间段,在开发工具STS中添加了tomcat容器,启动tomcat的时候报错了异常,8008端口无故躺枪、现场证据:timeout < 0,基于此、本侦探打算亲自前往。

解决方案


严重: Failed to initialize end point associated with ProtocolHandler ["ajp-nio-8008"]
java.lang.IllegalArgumentException: timeout < 0
	at java.base/sun.nio.ch.ServerSocketAdaptor.setSoTimeout(ServerSocketAdaptor.java:161)
	at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:352)
	at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:810)
	at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:476)
	at org.apache.catalina.connector.Connector.initInternal(Connector.java:960)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
	at org.apache.catalina.core.StandardService.initInternal(StandardService.java:568)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
	at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:871)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:581)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:604)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:310)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)

622, 2021 10:22:50 上午 org.apache.catalina.core.StandardService initInternal
严重: Failed to initialize connector [Connector[AJP/1.3-8008]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[AJP/1.3-8008]]
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
	at org.apache.catalina.core.StandardService.initInternal(StandardService.java:568)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
	at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:871)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:581)
	at org.apache.catalina.startup.Catalina.load(Catalina.java:604)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:310)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)
Caused by: org.apache.catalina.LifecycleException: Protocol handler initialization failed
	at org.apache.catalina.connector.Connector.initInternal(Connector.java:962)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
	... 12 more
Caused by: java.lang.IllegalArgumentException: timeout < 0
	at java.base/sun.nio.ch.ServerSocketAdaptor.setSoTimeout(ServerSocketAdaptor.java:161)
	at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:352)
	at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:810)
	at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:476)
	at org.apache.catalina.connector.Connector.initInternal(Connector.java:960)
	... 13 more

​

现场分析

详细询问了现场人员、以下是现场证词:
tomcat:我自己能正常启动,但是和STS合作后ajp就这样了。
STS:我用的东西都是tomcat给我的、他给我时候ajp就这样了。
java:看我做什么,我进来时候ajp已经躺枪了。
spring: 坐等吃瓜。

解决方案

经过本侦探总结如下:
问题并不是出现在项目上,根据java的证词,当时自己还没有进来(不加入项目依然显示此错误)。
也不是出现在tomcat上面,因为和STS合作之前,ajp还是好好的(单独启动tomcat没报错)。
当然STS也没用问题,他表示东西都是tomcat给他的(STS启动的tomcat只是引用了tomcat的配置文件)。

那么真相只有一个在这里插入图片描述
Tomcat和STS的合作没有沟通好

知道了问题所在,那么本侦探也开始解救躺枪的ajp,找到server.xml,在屁股(Connector)上注射了一针迟缓剂(connectionTimeout="20000"),如下图:

    <Connector connectionTimeout="20000"  port="8008" protocol="AJP/1.3" redirectPort="8443"/>

由此,tomcat与STS握手言和。网站大家庭又过上了幸福美满的生活。

最近太忙没太多时间写文章、这次刚想搞点东西,发现网站改版了、有点小意外,差点找不到家,哈哈哈。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰夏之夜影

赠人玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值