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

时间:2014-12-02 22:32:56

标签: java tomcat jvm tomcat7

我在服务器上运行了两个tomcats

一个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并且我验证了端口是免费的

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

因此,请更改端口号,使其唯一。

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