解决Tomcat APR - tcnative-1.dll引起的 “Socket accept failed WSACancelBlockingCall”问题
问题描述:
系统环境(在 Tomcat Server Status 中直接复制过来)
2011-8-2 9:03:53 org.apache.tomcat.util.net.AprEndpoint$Acceptor run严重: Socket accept failedorg.apache.tomcat.jni.Error: A blocking operation was interrupted by a call to WSACancelBlockingCall.at org.apache.tomcat.jni.Socket.accept(Native Method)at org.apache.tomcat.util.net.AprEndpoint$Acceptor.run(AprEndpoint.java:1109)at java.lang.Thread.run(Thread.java:595)2011-8-2 9:03:53 org.apache.coyote.ajp.AjpAprProtocol destroy信息: Stopping Coyote AJP/1.3 on ajp-8009?解决:
问题根源:你下载的 tcnative-1.dll 文件不是 Tomcat 原始使用的那个版本文件
在 $CATALINA_HOME/webapps/docs/apr.html 打开其官方 Apache Portable Runtime (APR) 文档描述,其 APR 包的源码在 bin/tomcat-native.tar.gz 归档文件中。所以,打开该文件就可以知道该 Tomcat native 的版本是多少,然后就到 Tomcat native 下载中心下载相同版本的 tcnative-1.dll 和 openssl.exe 即可。问题搞定了,就这么简单!如果版本不一样,就可能会出现上面这个问题,这就是引起该问题的根源所在。
Ok,就说这么多了!^_^