bind failed: Address already in use ["transport.c",L41]
郁闷我三天的问题今天解决了,终于
?
事情是这样的,我想在一台机器上配置多个tomcat,形成集群
?
过程是这样,像大多数网页上描述的那样,修改tomcat 配置文件server.xml 里面几个端口号,使他们不能相同 ,具体为如下几个端口
。。。<Server port="8005" shutdown="SHUTDOWN">。。。
。。。 <Connector port="8080" maxHttpHeaderSize="8192"
?????????????? maxThreads="1000" minSpareThreads="250" maxSpareThreads="750"
?????????????? enableLookups="false" redirectPort="8443" acceptCount="1000"
?????????????? connectionTimeout="20000" disableUploadTimeout="true" />。。。
。。。<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
??
??? <Connector port="8443"(和上一个8443端口修改为相同的端口)? maxHttpHeaderSize="8192"
?????????????? maxThreads="1000" minSpareThreads="250" maxSpareThreads="750"
?????????????? enableLookups="false" disableUploadTimeout="true"
?????????????? acceptCount="100" scheme="https" secure="true"
?????????????? clientAuth="false" sslProtocol="TLS" keystoreFile="server.keystore" keystorePass="changeit" />
??
??? <!-- Define an AJP 1.3 Connector on port 8009 -->
??? <Connector port="8009"?
?????????????? enableLookups="false" redirectPort="8443"(和上一个8443端口修改为相同的端口) protocol="AJP/1.3" />。。。
。。。!-- Define the top level container in our container hierarchy -->
?? <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1" >?? 。。。。
。。。。 <Receiver
??????????????? className="org.apache.catalina.cluster.tcp.ReplicationListener"
??????????????? tcpListenAddress="auto"
??????????????? tcpListenPort="4001"
??????????????? tcpSelectorTimeout="100"
??????????????? tcpThreadCount="6"/>。。。。。
?
经过修改上述几个端口后,几乎大部分其他人的集群就好用了,可是偏偏我的不行
我开第二个tomcat的时候,会打印如下日志信息:
?
ERROR: transport error 202: bind failed: Address already in use ["transport.c",L41]
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) ["debugInit.c",L500]
JDWP exit error JVMTI_ERROR_INTERNAL(113): No transports initializedFATAL ERROR in native method: JDWP No transports initialized, jvmtiError=JVMTI_ERROR_INTERNAL(113)
然后我就找不到参考的文章了,最后通过查看启用文件脚本,找到了问题所在
原因是还有端口没有改全,还有两个地方
一个是 tomcat? bin 目录下的 startup.sh 文件,“export JPDA_ADDRESS=8000” ,这个参数得修改,比如改为 “8100”吧,
还有一个文件是 tomcat? bin 目录下的 catalina.sh 文件, 有这样一段代码
“
if [ "$1" = "jpda" ] ; then
? if [ -z "$JPDA_TRANSPORT" ]; then
??? JPDA_TRANSPORT="dt_socket"
? fi
? if [ -z "$JPDA_ADDRESS" ]; then
??? JPDA_ADDRESS="8000"
? fi
? if [ -z "$JPDA_SUSPEND" ]; then
??? JPDA_SUSPEND="n"
? fi
? if [ -z "$JPDA_OPTS" ]; then
??? JPDA_OPTS="-Xdebug -Xrunjdwp:transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
? fi
? CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
? shift
fi
”
把其中的8000 改为对应刚才修改的,如 8100,然后我的问题就解决了,就这样