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,然后我的问题就解决了,就这样

你可能感兴趣的:(tomcat,C++,c,socket,C#)