2014-12-02 107 views
0

我有我的服務器上運行2個雄貓java.net.BindException:地址已在使用:JVM_Bind

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

  <Connector port="8080" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      redirectPort="8443" /> 
      ... 
      <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 

在第二tomcat的有:

  <Connector port="8080" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      redirectPort="8443" /> 
      ... 
      <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 

但是當我跑第一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.<init>(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和我覈實,該端口可以自由

回答

0
<Connector port="8080" protocol="HTTP/1.1" 
     connectionTimeout="20000" 
     redirectPort="8443" /> 

8080是哪個服務器運行的端口號。只有一臺服務器(您將首先啓動)將運行。其他人會拋出JVM綁定異常。

因此,更改端口號以使它們是唯一的。

您運行第一臺服務器,然後使用netstat命令查看正在使用的端口。

1

你需要有不同的端口爲Tomcat實例包括但不限於連接器端口,端口AJP ,關閉端口。一旦你有了這個錯誤就會消失。

但是,使用相同的tomcat二進制文件來運行使用CATALINA_BASE變量的多個tomcat實例是一種很好的做法。更多細節在下面的鏈接中。請參閱關於運行多個實例的部分。還要注意,這個相同的RUNNING.txt文件也將在tomcat二進制文件中,您也可以在那裏查看它。
http://tomcat.apache.org/tomcat-7.0-doc/RUNNING.txt

相關問題