java.net.BindException:已在使用的地址:JVM_Bind

我有两个tomcats在我的服务器上运行

一个是Tomcat 7,另一个是tomcat 8,第一个配置文件server.xml是:

 ...  

在第二个tomcat有:

   ...  

但当我运行第一个tomcat时,控制台说

 java.net.BindException: Address already in use: JVM_Bind at java.net.DualStackPlainSocketImpl.bind0(Native Method) at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source) at java.net.AbstractPlainSocketImpl.bind(Unknown Source) at java.net.PlainSocketImpl.bind(Unknown Source) at java.net.ServerSocket.bind(Unknown Source) at java.net.ServerSocket.(Unknown Source) at org.apache.catalina.core.StandardServer.await(StandardServer.java:420) at org.apache.catalina.startup.Catalina.await(Catalina.java:713) at org.apache.catalina.startup.Catalina.start(Catalina.java:659) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485) 

但第二次运行良好,我使用命令netstate -t​​nao,我validation端口是免费的

  

8080是服务器将运行的端口号。 只运行一台服务器(您将首先启动)。 其他人会抛出Jvm Bind Exception。

因此,更改端口号以使它们是唯一的。

您运行第一台服务器,然后使用netstat命令查看正在使用的端口。

您需要为tomcat实例提供不同的端口,包括但不限于连接器端口,ajp端口,关闭端口。 一旦你有了这个错误就会消失。

但是,最好使用相同的tomcat二进制文件来使用CATALINA_BASE变量来运行多个tomcat实例。 更多详情请见下面的链接。 请参阅有关运行多个实例的部分。 另请注意,同样的RUNNING.txt文件也可以在tomcat二进制文件中,您也可以在那里查看它。
http://tomcat.apache.org/tomcat-7.0-doc/RUNNING.txt